今天安装gitphp,什么都没问题。就是最后开启调试的时候,老提示说项目根路径无法访问,可检查了N遍了,这个目录没错啊。

一怒之下,干脆自己操刀重写一个gitphp。结果第一步获取目录列表的时候就出错了,提示说要打开的目录不在允许的范围内。这一错,让我似乎想到了什么。于是就赶紧查阅Apache错误日志,PHP文档中关于目录文件操作的部分,一看才知道,原来日志中已经提示了要打开的目录/srv/git不在允许的范围内。

遂准备去拿Apache配置文件开到,不过临走时却发现日志中提示查阅open_dirbase的设置。这东西貌似没听说过apache有这个设置项啊,是不是PHP的呢?于是:

果然找到了。原来这是PHP的一个安全机制。可是如果要因为这个而修改PHP配置感觉有点不爽,因为毕竟只有一个虚拟主机需要读取这个目录,直接修改是不是……

再网上搜索一番,原来遇到这个问题的人都不少。也给出了两类三种设置方法。

  • 直接在PHP的配置文件里修改这个设置

  • 在Apache的配置文件里通过php_admin_value open_basedir 第一个目录:第二个目录:……

  • 在Apache的虚拟主机配置里,像上一条那么设置

这三种方式,其实都是一样的原理——通过设置PHP配置来实现的。从前到后优先级递增,而且都是覆盖性的而不是继承的。

这里也给我了一个设置PHP配置的新思路,通过在Apache(或其虚拟主机)配置中,通过php_admin 项目名 项目值来配置PHP。