代码之家  ›  专栏  ›  技术社区  ›  Jeroen

如何使用PhpStorm 8在远程服务器上使用PHPUnit

  •  1
  • Jeroen  · 技术社区  · 11 年前

    我在远程服务器上的Ubuntu 12.04上运行了一个php-fpm 5.3.10安装程序,我正在尝试从PhpStorm 8中使用PHPUnit(截至昨天)。我没有本地php安装。

    我已经在服务器上安装了PHPUnit,可以通过命令行使用它。

    我(似乎)成功地将我的PhpStorm链接到了远程服务器和远程解释器,并配置了正确的部署设置。

    起初,我遇到了一个问题,它会尝试远程运行我的本地路径,但这个问题已经解决。然而,我总是会出错 Cannot find PHPUnit in include path (.:/usr/share/php:/usr/local/bin) 。这几乎肯定是服务器端错误(PhpStorm也知道这些包含路径,可能会将它们与本地路径混淆),因为当我在php.ini中更改包含路径时,路径会发生变化。

    如果我根本不安装PHPUnit,它会返回同样的错误,所以这似乎也是服务器端的问题。

    我尝试过通过PEAR(PHPUnit已被弃用,很快也不支持,但在很多PhpStorm教程中仍有提及)、Composer(在远程服务器上,而不是在PhpStorom中)甚至手动安装PHPUnit。

    服务器很好地接受了这些安装方法(PEAR方法似乎安装了较旧版本的PHPUnit 1.0.x,而不是明显可用的4.0.x),但它们都存在相同的问题。

    如果我手动将PHPUnit放在我的include路径中(我不确定它想要什么样的文件,不过.a.phar?源文件。

    在这一点上,我开始没有什么想法了,对类似问题的Stackoverflow响应或PhpStorm/PHPUnit文档似乎都不能帮助我。

    编辑1:根据要求包含设置图片。

    (还不能发布图片,代表不足) settings

    除此之外,可能值得注意的是,我在部署中使用了一个已安装的文件夹,它仅指服务器的文件系统(位于我的本地网络中)

    编辑2:按照建议将部署更改为SFTP,并更新了我的映射,因为PhpStorm能够成功地验证我的远程环境,一切似乎都井然有序。

    在通过Composer重新安装PHPUnit并在PHPUnit设置中选择自动加载器后,它仍然给出包含路径的错误(使用自动加载器时不应该这样做,是吗?),因此我将包含路径更改为指向 /usr/share/php/Composer/vendor/phpunit (以及上面的两个目录)。

    它仍然给出了错误,但是在错误中,它表示在include路径中找不到PHPUnit,而安装在一个名为PHPUnit的目录中(全部小写)。将目录名更改为PHPUnit后,它不再给出包含路径错误,而是给出en-XDebug错误: Warning: include(/usr/share/php/Composer/vendor/phpunit/phpunit/PHPUnit/TextUI/ResultPrinter.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory in /usr/share/php/Composer/vendor/composer/ClassLoader.php on line <i>382</i>

    我不确定这到底意味着什么,我不知道错误是否是因为我不应该更改目录名(这似乎不必要),因为我没有更改足够多的目录名(其他目录可能仍然是小写的),或者因为这些文件不应该在include路径中(composer应该管理我的依赖项,不是吗?)。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Frank    11 年前

    在某些情况下,这可以非常容易地解决。PHPStorm在include路径中查找文件夹PHPUnit,但我发现这是区分大小写的!通过composer进行安装会将PHPUnit安装在一个名为/vvendor/PHPUnit/PHPUnit/PHPUnit的文件夹中,这都是小写的。这意味着PHPStorm将无法找到文件夹,除非您将文件夹名称更改为“PHPUnit”。因此,include路径应该是:/usr/share/php/compooser/vendor/phpunit/phpunit,在该文件夹中,应该有另一个名为“phpunit”的文件夹(区分大小写!)。我确信这不是完美的解决方案,但它确实有效。

    推荐文章