【问题标题】:PHP CodeSniffer include_once errorPHP CodeSniffer include_once 错误
【发布时间】:2012-12-24 19:09:34
【问题描述】:

我正在尝试在 OS X Mountain Lion 上安装 PHP CodeSniffer - 我似乎遇到了一个奇怪的问题

运行 'phpcs' 时出现以下错误:

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

文件/usr/lib/php/pear/share/pear/PHP/CodeSniffer/CLI.php存在,这让我很困惑

【问题讨论】:

  • /usr/lib/php/pear/share/pear/ 在您的 PHP 默认包含列表中吗? (检查 php.ini)

标签: php macos codesniffer


【解决方案1】:

发现问题 - 我在 include_path 中使用 Windows 分隔符(分号)而不是 Unix 分隔符(冒号),所以应该是:

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

而不是

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

【讨论】:

  • 恕我直言,这是一个比其他答案更好的答案,只需正确设置包含路径即可。
【解决方案2】:

使用通过Composer 安装的 PHP CodeSniffer 时出现此错误。

修复它:

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

【讨论】:

    【解决方案3】:

    在我的配置中,PHP/ 路径并不是 phpcs 所期望的。 我通过创建指向缺失路径的符号链接解决了这个问题。

    进入pear目录并运行:

    ln -s share/pear/PHP/ PHP
    

    【讨论】:

    • 不完全是我需要的,但让我找到了解决方案。谢谢
    • 我的 pear 目录在我的用户文件夹 (~/pear) 中,所以我必须将其添加到 php.ini 中的 include_path
    【解决方案4】:

    如果您使用的是 MAMP,请将其包含在您的路径中:

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

    通过将 5.X.XX 替换为您的 php 版本。就我而言,这是:

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

    【讨论】:

      【解决方案5】:

      就我而言——安装了PHP-OSX——我必须像这样修复符号链接:

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

      然后:

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

      【讨论】:

        【解决方案6】:

        这可能不是最好的解决方案,但它不需要更改您的路径或其他任何内容。 在 phpcs 文件中,您将找到包含以下内容的部分:

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

        如果路径正确,则只需添加一个新的 else 文件 CLI.php(即 '/usr/local/pear/share/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';
        }
        

        最后但同样重要的是,记录此更改以供以后的版本和更新使用。 最终的解决方案必须是PHPCS的开发者为找到CLI.php做一个更坚实的构造

        【讨论】:

        • 我喜欢这种解决方案 :)。谢谢先生,你拯救了我的一天。
        【解决方案7】:

        为了它的价值,我使用 homebrew (OS X) 安装了 PHP。第一次安装是 5.6.3,但随着时间的推移升级。默认ini文件,可以通过以下方式找到文件的位置:

        php -i | grep ini
        

        在 osx 上 - 仍然有对 5.6.3 的路径引用。当我更新这些 - 特别是包含路径时,一切正常;不需要符号链接。

        【讨论】:

          【解决方案8】:

          这个 D:\wamp\bin\php\php_VERSION\phpcs 修改在 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();
          

          【讨论】:

            【解决方案9】:

            卸载它并使用composer重新安装它

            alias php=/Applications/MAMP/bin/php/php5.6.10/bin/php;
            composer global require "squizlabs/php_codesniffer=*";
            

            来源:https://tommcfarlin.com/php-codesniffer-with-composer/

            【讨论】:

              【解决方案10】:

              我在尝试以非特权用户身份运行 phpcs 时遇到了这个问题,我通过 PEAR 以 root 身份安装了它。

              对我来说修复是更改权限,以便非特权用户可以访问依赖项:

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

              【讨论】:

                【解决方案11】:

                我通过将正确的路径添加到 PHP 扫描 INI 文件的另一个目录来解决它(它在 phpinfo.php 中列出)。从终端执行这三个命令:

                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
                

                【讨论】:

                  猜你喜欢
                  • 2016-04-10
                  • 1970-01-01
                  • 2013-02-25
                  • 1970-01-01
                  • 2020-06-03
                  • 1970-01-01
                  • 2012-02-23
                  • 2019-08-01
                  • 2018-10-29
                  相关资源
                  最近更新 更多