·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> phpunit安装出错的原因及解决办法

phpunit安装出错的原因及解决办法

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
phpunit安装出错的原因及解决办法##官方指引很遗憾, phpunit还没有在ArchLinux的仓库里。所以使用下载安装的方式。按照[官方的指引](https://phpunit.de/getting-started.html): wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar sudo mv phpunit.phar /usr/local/bin/phpunit phpunit --version结果得到下面的错误: PHP Warning: realpath(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 3 PHP Fatal error: Class 'Phar' not found in /usr/local/bin/phpunit on line 714## 启用phar扩展先解决`Fatal error: Class 'Phar' not found`。 ls /usr/lib/php/modules发现有 phar.so,说明Phar的扩展已经安装,那么是不是该扩展没有Enable呢?打开 `/etc/php/php.ini`搜索 `phar`,果然发现 `extension=phar.so`被注释掉了。去掉该行前面的 `;`,保存php.ini,再次运行 `phpunit --version`。 PHP Warning: realpath(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 3 PHP Warning: Phar::mapPhar(): open_basedir restriction in effect. File(/usr/local/bin/phpunit) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/) in /usr/local/bin/phpunit on line 714`Fatal error`解决了,但警告还在,而且phpunit没有正常运行。## php对文件访问的保护机制google之,发现这里有解释: http://www.templatemonster.com/help/open_basedir-restriction-in-effect-filex-is-not-within-the-allowed-paths-y.html> php open_basedir PRotection tweak is a Safe Mode security measure that prevents users from opening files or scripts located outside of their home directory with PHP, unless the folder has specifically excluded. PHP open_basedir setting if enabled, will ensure that all file Operations to be limited to files under certain directory, and thus prevent php scripts for a particular user from accessing files in unauthorized user’s account. When a script tries to open a file with, for example, fopen() or gzopen(), the location of the file is checked. When the file is outside the specified or permissible directory-tree, PHP will refuse to open it and the following errors may occur: ...意思是说:php.ini中的`open_basedir`是php为保证安全进行文件访问的设置。如果该选项被赋值,所有的文件操作将限定在特定的目录里,这样可以防止某个用户使用php脚本读取未授权的内容。当你想通过`fopen`或`gzopen`打开一个文件时,如果该文件的位置不再被允许的目录下面,就会出现上述的警告信息。从警告信息发现可以访问的目录包括 `/srv/http/:/home/:/tmp/:/usr/share/pear/`,刚好 `~/bin`即在PATH变量中,也属于可以被php脚本读取的目录,于是 mv /usr/local/bin/phpunit ~/bin再运行`phpunit --version`,得到正确结果: PHPUnit 4.5.0 by Sebastian Bergmann and contributors. phpunit安装成功!