在 php.ini 我已经设置
open_basedir = /home/user/web/
Run Code Online (Sandbox Code Playgroud)
现在我想在需要包含来自 /usr/share/phppgadmin 的文件的子域上运行 phppgadmin。
因此,我在此主机的 nginx-config 中添加了以下行:
fastcgi_param PHP_VALUE open_basedir="/home/user/web/:/usr/share/phppgadmin/";
Run Code Online (Sandbox Code Playgroud)
并重新启动nginx。但是,由于以下错误,我无法访问该站点:
[错误] 31440#0: *1 FastCGI 发送到 stderr: "PHP 警告: include_once(): open_basedir 限制生效。文件(/usr/share/phppgadmin/libraries/lib.inc.php) 不在允许的路径内(s): (/home/user/web/)在 /usr/share/phppgadmin/info.php 第 10 行
此处未列出第二条路径的原因可能是什么?将 open_basedir 添加到虚拟主机还需要什么?我只使用了 /sites-available 中的默认文件。
编辑总是想到重新启动fpm ...
service php5-fpm restart
Run Code Online (Sandbox Code Playgroud) 我安装了本地 MediaWiki 并授予其访问以下目录的权限php.ini
:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/mediawiki
Run Code Online (Sandbox Code Playgroud)
为什么我仍然收到以下消息?这对我来说没有意义:
<b>Warning</b>: is_file(): open_basedir restriction in effect. File(/usr/share/webapps/mediawiki/images/lock_yBgMBwiR) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/mediawiki) in <b>/usr/share/webapps/mediawiki/includes/GlobalFunctions.php</b> on line <b>1196</b><br />
Run Code Online (Sandbox Code Playgroud)
怎能/usr/share/webapps/mediawiki/images/lock_yBgMBwiR
不在之内/usr/share/webapps/mediawiki
?
我在 httpd.conf 中没有进一步的限制(我在官方 php 文档中读到文件 open_basedir 语句也可以如此)。