phpunit安装出错的原因及解决方法
Jun 13, 2016 pm 12:15 PM
phpunit安装出错的原因及解决办法
官方指引
很遗憾, phpunit还没有在ArchLinux的仓库里。
所以使用下载安装的方式。按照官方的指引:
<code>wget https://phar.phpunit.de/phpunit.pharchmod +x phpunit.pharsudo mv phpunit.phar /usr/local/bin/phpunitphpunit --version</code>
结果得到下面的错误:
<code>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</code>
启用phar扩展
先解决Fatal error: Class 'Phar' not found
。
<code>ls /usr/lib/php/modules</code>
发现有 phar.so,说明Phar的扩展已经安装,那么是不是该扩展没有Enable呢?
打开 /etc/php/php.ini
搜索 phar
,果然发现 extension=phar.so
被注释掉了。去掉该行前面的 ;
,保存php.ini,再次运行 phpunit --version
。
<code>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</code>
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脚本读取的目录,于是
<code>mv /usr/local/bin/phpunit ~/bin</code>
再运行phpunit --version
,得到正确结果:
<code>PHPUnit 4.5.0 by Sebastian Bergmann and contributors.</code>
phpunit安装成功!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP
