使用Yaf代码生成器生成了项目目录后index.php
文件是和application
目录同级别的,于是想改成下面这样
+ public
|- index.php //入口文件
|- .htaccess //重写规则
|+ css
|+ img
|+ js
+ conf
|- application.ini //配置文件
+ application
|+ controllers
|- Index.php //默认控制器
|+ views
|+ index //控制器
|- index.phtml //默认视图
|+ modules //其他模块
|+ library //本地类库
|+ models //model目录
|+ plugins //插件目录
即把index.php
放入public
目录中。而且修改了index.php中的APPLICATION_PATH
常量路径
define('APPLICATION_PATH', realpath(__DIR__ . '/../'));
这时由于lnmp集成环境的open_basedir
限制导致php无法读取上一级目录,会报类似如下错误
Warning: realpath(): open_basedir restriction in effect. File(/srv/code) is not within the allowed path(s): (/srv/code/yaf:/tmp/:/proc/) in /srv/code/yaf/public/index.php on line 7
由于lnmp1.4beta环境在/usr/local/nginx/conf/fastcgi.conf
中添加了fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
这一行,所以如果需要我们自己手动控制限制目录就得先注释掉这行。
在index.php
同级写可以新建一个.user.ini
的文件来进行open_basedir
的控制
cd public
cat 'open_basedir=/srv/code/yaf:/tmp/:/proc/' > .user.ini
chmod 644 .user.ini
/etc/init.d/php-fpm restart
然后就可以通过.user.ini
文件来设置了
注意:.user.ini
文件得和入口文件index.php
同级,我之前放到了项目根目录下,导致怎么配也无法生效