2013-01-10 32 views
14

Sto cercando di installare PHP CodeSniffer su OS X Mountain Lion - e mi sembra essere sempre uno strano problemaPHP CodeSniffer errore include_once

Durante l'esecuzione di '' phpcs ottengo il seguente errore:

PHP Warning: include_once(PHP/CodeSniffer/CLI.php): failed to open stream: No such 
file or directory in /usr/lib/php/pear/bin/phpcs on line 31 

PHP Warning: include_once(): Failed opening 'PHP/CodeSniffer/CLI.php' for inclusion 
(include_path='.;/usr/lib/php/pear/share/pear/') in /usr/lib/php/pear/bin/phpcs on line 31 

PHP Fatal error: Class 'PHP_CodeSniffer_CLI' not found in /usr/lib/php/pear/bin/phpcs 
on line 34 

il file /usr/lib/php/pear/share/pear/PHP/CodeSniffer/CLI.php esiste, che mi confonde

+2

è '/ usr/lib/php/pera/share/pera /' nel vostro predefinita PHP include elenco? (controlla php.ini) – SDC

risposta

1

trovato il problema - stavo usando il separatore di Windows (punto e virgola) in il percorso include invece di quello Unix (due punti), quindi dovrebbe essere stato:

.:/usr/lib/php/pear/share/pear/ 

invece di

.;/usr/lib/php/pear/share/pear/ 
+0

IMHO questa è una risposta migliore rispetto alle altre, basta impostare correttamente il percorso di inclusione. – Cameron

3

ho ottenuto questo errore quando si usa PHP CodeSniffer installato tramite Composer.

fisso con:

cd /path/to/app 
rm -rf vendor/ 
composer update 
12

sulla configurazione di PHP/percorso non era dove phpcs aspettava. L'ho risolto creando un collegamento simbolico al percorso mancante.

vai a Directory pera ed eseguire:

ln -s share/pear/PHP/ PHP 
+0

Non proprio quello di cui avevo bisogno, ma mi ha portato a una soluzione. Thx – Ing

+1

La mia cartella 'pear' era nella mia cartella utente (' ~/pear'), quindi ho dovuto aggiungerla al file 'include_path' di php.ini. –

1

Se si sta utilizzando MAMP includere questo nel vostro percorso:

export PATH=/Applications/MAMP/bin/php/php5.X.XX/lib/php:$PATH 

sostituendo 5.X.XX con la vostra versione di PHP. Nel mio caso questo è stato:

export PATH=/Applications/MAMP/bin/php/php5.4.26/lib/php:$PATH 
0

Nel mio caso - dopo aver installato PHP-OSX - ho dovuto correggere il link simbolico in questo modo:

cd /usr/local/php5/lib/php/PHP 

e poi:

ln -s /usr/local/share/pear/PHP/CodeSniffer 
ln -s /usr/local/share/pear/PHP/CodeSniffer.php 
5

Questo forse non è la soluzione migliore, ma non richiede alcuna modifica al tuo percorso o altro. Nei phpcs di file troverete una sezione con:

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) { 
    include_once dirname(__FILE__).'/../CodeSniffer/CLI.php'; 
else { 
    include_once 'PHP/CodeSniffer/CLI.php'; 
} 

Basta aggiungere un nuovo altro, se con il percorso del file corretto CLI.php (ad esempio '/ usr/local/pera/share/pera/PHP /CodeSniffer/CLI.php '):

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) { 
    include_once dirname(__FILE__).'/../CodeSniffer/CLI.php'; 
} else if (is_file('/usr/local/pear/share/pear/PHP/CodeSniffer/CLI.php')) { 
    include_once '/usr/local/pear/share/pear/PHP/CodeSniffer/CLI.php'; 
} else { 
    include_once 'PHP/CodeSniffer/CLI.php'; 
} 

Ultimo ma non meno importante documento questa modifica per le versioni successive e gli aggiornamenti. Alla fine la soluzione deve essere che lo sviluppatore di PHPCS realizzi una costruzione più solida per trovare il CLI.php

+0

Adoro questo tipo di soluzioni :). Grazie signore, mi hai salvato la giornata. –

0

Per quello che vale, ho installato PHP usando homebrew (OS X). La prima installazione è stata 5.6.3, ma è stata aggiornata nel tempo. Il file predefinito ini, è possibile trovare la posizione del file con:

php -i | grep ini 

su OSX - aveva ancora riferimenti di percorso a 5.6.3.Quando ho aggiornato questi - in particolare il percorso di inclusione, tutto ha funzionato bene; non è richiesto alcun symlink

0

Questa modifica D:\wamp\bin\php\php_VERSION\phpcs ha funzionato per me su WAMP

if (is_file(dirname(__FILE__).'/../CodeSniffer/CLI.php') === true) { 
    include_once dirname(__FILE__).'/../CodeSniffer/CLI.php'; 
} else if (is_file(dirname(__FILE__).'/pear/PHP/CodeSniffer/CLI.php') === true) { 
    include_once dirname(__FILE__).'/pear/PHP/CodeSniffer/CLI.php'; 
} else { 
    include_once 'PHP/CodeSniffer/CLI.php'; 
} 

$cli = new PHP_CodeSniffer_CLI(); 
$cli->runphpcs(); 
0

ho avuto questo problema cercando di eseguire phpcs come utente non privilegiato, dopo averlo installato tramite PEAR, come utente root.

Fix per me è stato quello di modificare le autorizzazioni in modo che l'utente non privilegiato potrebbe accedere alle dipendenze:

chmod -R o+rx /usr/local/lib/php/