visual - PHP CodeSniffer include_once error
unable to locate phpcs vscode (11)
Estoy tratando de instalar PHP CodeSniffer en OS X Mountain Lion - y parece que tengo un problema extraño
Al ejecutar ''phpcs'' obtengo el siguiente error:
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
El archivo /usr/lib/php/pear/share/pear/PHP/CodeSniffer/CLI.php existe, lo que me confunde
Desinstala y vuelve a instalarlo utilizando Composer.
alias php=/Applications/MAMP/bin/php/php5.6.10/bin/php;
composer global require "squizlabs/php_codesniffer=*";
Fuente: https://tommcfarlin.com/php-codesniffer-with-composer/
En mi caso, habiendo instalado PHP-OSX , tuve que arreglar el enlace simbólico así:
cd /usr/local/php5/lib/php/PHP
y entonces:
ln -s /usr/local/share/pear/PHP/CodeSniffer
ln -s /usr/local/share/pear/PHP/CodeSniffer.php
En mi configuración, la ruta PHP / simplemente no estaba donde phpcs lo esperaba. Lo resolví creando un enlace simbólico a la ruta faltante.
Vaya al directorio de peras y ejecute:
ln -s share/pear/PHP/ PHP
Encontré el problema: estaba usando el separador de Windows (punto y coma) en include_path en lugar de Unix (colon), por lo que debería haber sido:
.:/usr/lib/php/pear/share/pear/
en lugar de
.;/usr/lib/php/pear/share/pear/
Esta D:/wamp/bin/php/php_VERSION/phpcs
funcionó para mí en 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();
Lo resolví agregando la ruta correcta al otro directorio que PHP escanea en busca de archivos INI (aparece en phpinfo.php). Ejecuta estos tres comandos desde la Terminal:
sudo mkdir -p /Library/Server/Web/Config/php
sudo touch /Library/Server/Web/Config/php/local.ini
echo ''include_path = ".:''`pear config-get php_dir`''"'' | sudo tee -a /Library/Server/Web/Config/php/local.ini
Por lo que vale la pena, instalé PHP usando homebrew (OS X). La primera instalación fue 5.6.3, pero se actualizó con el tiempo. El archivo ini predeterminado, puede encontrar la ubicación del archivo con:
php -i | grep ini
en osx - todavía tenía referencias de ruta a 5.6.3. Cuando actualicé estos, específicamente la ruta de inclusión, todo funcionó bien; no se requieren enlaces simbólicos.
Quizás esta no sea la mejor solución, pero no requiere ningún cambio en su camino o cualquier otra cosa. En el archivo phpcs encontrarás una sección con:
if (is_file(dirname(__FILE__).''/../CodeSniffer/CLI.php'') === true) {
include_once dirname(__FILE__).''/../CodeSniffer/CLI.php'';
else {
include_once ''PHP/CodeSniffer/CLI.php'';
}
Simplemente agregue un nuevo más si con su ruta al archivo correcto CLI.php (es decir, ''/usr/local/pear/shear/pear/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'';
}
Por último, pero no menos importante, documente este cambio para versiones y actualizaciones posteriores. Al final, la solución debe ser que el desarrollador de PHPCS realice una construcción más sólida para encontrar el CLI.php
Recibí este error al usar PHP CodeSniffer instalado a través de Composer .
Lo arreglamos con:
cd /path/to/app
rm -rf vendor/
composer update
Si está utilizando MAMP, incluya esto en su ruta:
export PATH=/Applications/MAMP/bin/php/php5.X.XX/lib/php:$PATH
reemplazando 5.X.XX con su versión php. En mi caso esto fue:
export PATH=/Applications/MAMP/bin/php/php5.4.26/lib/php:$PATH
Tuve este problema al intentar ejecutar phpcs como un usuario no privilegiado, habiéndolo instalado a través de PEAR, como root.
La solución para mí fue cambiar los permisos para que el usuario sin privilegios pudiera acceder a las dependencias:
chmod -R o+rx /usr/local/lib/php/