经验分享:lnmp一键安装包(防跨目录设置)的坑爹过程,以及解决方案

技术分享 · zhaoyixim · 于 6年前 发布 · 4457 次阅读

lnmp 一键安装包看着好用,虽然安装时间比较费时间,但是管理起来还不错,但是!

小编今天在重起一个服务器的时候就发现一个坑爹的问题,

在安装yii2的时候

<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../../common/config/bootstrap.php');
require(__DIR__ . '/../config/bootstrap.php');

这个地方的require根本就木有办法去跨目录包含,

找了很多资料,最后还是大神LL哥的指引下找到这个,现在分享一下:


LNMP 1.1及之前的版本使用php.ini里面,open_basedir设置. LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改.user.ini 里面的open_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。 .user.ini文件无法直接修改,如要修或删除需要先执行:chattr -i /网站目录/.user.ini

可以使用winscp文件管理、vim编辑器或nano编辑器进行修改。

删除的话rm -f /网站目录/.user.ini 就可以。

修改完成后再执行:chattr +i /网站目录/.user.ini

.user.ini不需要重启一般5分钟左右生效,也可以重启一下php-fpm立即生效。

如果要更改网站目录必须要按上述方法修改防跨目录的设置,否则肯定报错!!

LNMP 1.4上如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 

在该行行前添加 # 或删除改行,需要重启nginx。

LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除。

LNMPA或LAMP 模式1.2版本以上的防跨目录的设置使用的对应apache虚拟主机配置文件(lnmp管理工具添加的话文件是 /usr/local/apache/conf/vhost/域名.conf )里的php_admin_value open_basedir参数进行设置。如果不需要设置可以在前面加 # 进行注释,或自行修改目录的限制。

重启apache生效。

大家前车之鉴,可以看看,不要耗费多余的时间了,最后感谢LL哥感谢fec大神。

本文由 zhaoyixim 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 1 条回复 技术分享
Fecmall#16年前 0 个赞

已经给你调整格式了。

可以学习一下markdown格式,发帖支持markdown格式,很简单,几个标签就够了

多谢分享

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics