zoukankan      html  css  js  c++  java
  • phpunit框架安装

    很遗憾, phpunit还没有在ArchLinux的仓库里。

    所以使用下载安装的方式。按照官方的指引

    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脚本读取未授权的内容。当你想通过fopengzopen打开一个文件时,如果该文件的位置不再被允许的目录下面,就会出现上述的警告信息。

    从警告信息发现可以访问的目录包括 /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安装成功!

  • 相关阅读:
    2.最详细的WSDD配置文件注释
    1.Apache Axis配置文件WSDD详解
    26. Intellij IDEA 启动项目ClassNotFoundException
    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ..
    Java 远程通讯技术及原理分析
    Hibernate 中配置属性详解(hibernate.properties)
    SSH之IDEA2017整合Struts2+Spring+Hibernate
    java对象与json对象间的相互转换
    25.怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
    24. 在IDEA中使用JUnit进行方法测试
  • 原文地址:https://www.cnblogs.com/Jerry-blog/p/4988276.html
Copyright © 2011-2022 走看看