您好,欢迎访问一九零五行业门户网

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

官方指引
很遗憾, phpunit还没有在archlinux的仓库里。
所以使用下载安装的方式。按照官方的指引:
wget https://phar.phpunit.de/phpunit.pharchmod +x phpunit.pharsudo mv phpunit.phar /usr/local/bin/phpunitphpunit --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 3php 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 3php 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安装成功!
以上就介绍了phpunit安装出错的原因及解决办法,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息