在 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) 这是关于两个子域。第一个 (www) 应该通过 http 访问。第二个(云)应该通过 https 访问。
这些是我的条目的相关部分:
server {
listen 80;
server_name cloud.example.de;
rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}
server {
listen 443 ssl;
server_name cloud.example.de;
root /home/user/web/cloud;
}
server {
listen 80;
server_name www.example.de;
root /home/user/web/cms;
#etc.
}
Run Code Online (Sandbox Code Playgroud)
当我现在调用http://cloud.example.de 时,我被重定向到https://cloud.example.de,很好。但是当我调用http://www.example.de 时,我也被重定向到https://www.example.de,这会将我带到 cloud.example.com 的内容,因为这是唯一设置为的服务器名称由端口 443 使用
。 www 子域的访问日志中没有条目。
还有另一个指向 phpPgAdmin 的子域。我可以正常访问它,它不会被重写。
server {
listen 80;
server_name pgsql.example.de;
root /home/user/web/phppgadmin;
#etc
}
Run Code Online (Sandbox Code Playgroud)
有什么不见了?仅当服务器名称匹配 cloud.example.de 时才应进行重写。
服务器条目的顺序是否相关或无关紧要?
在 …