我在新服务器 Ubuntu 16.04 上配置了我的新应用程序 php 5.6,使用 Nginx 1.10、php5.6-fpm,
当我尝试配置 phpmyadmin 以使用我的应用程序网址打开它时“http://myapp.com/pm",它说访问被拒绝,在我的 nginx 日志中出现以下错误:
2017/05/31 12:39:37 [error] 30267#30267: *9 FastCGI sent in stderr: "Access to the script '/var/www/html' has been denied (see security.limit_extensions)" while reading response header from upstream, client: xxx.xxx.xxx.xx, server: myapp.com, request: "GET /pm HTTP/1.1", upstream: "fastcgi://unix:/run/php/php5.6-fpm.sock:", host: "myapp.com"
我的虚拟主机配置是:
server {
listen 80;
server_name myapp.com;
index index.php index.html index.htm;
root /var/www/myapp/;
access_log /var/log/nginx/myapp_access.log;
error_log /var/log/nginx/myapp_error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location /pm {
root /var/www/html;
index index.php;
try_files $uri $uri/ =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.php {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
fastcgi_read_timeout 18000;
}
}
phpmyadmin 路径为:
ls -l /var/www/html/
total 4
-rw-r--r-- 1 www-data www-data 612 May 24 17:46 index.nginx-debian.html
lrwxrwxrwx 1 www-data www-data 22 May 25 17:01 pm -> /usr/share/phpmyadmin/
请问有什么帮助吗?
答案1
以下是一些可能的解决方案:
- 在 php-fpm www.conf 中将 security.limit_extensions 设置为 .php 或 .php5 或适合您环境的任何值。对于某些用户来说,完全删除所有值或将其设置为 FALSE 是使其正常工作的唯一方法。
- 在您的 nginx 配置文件中将 fastcgi_pass 设置为您的套接字地址(例如 unix:/var/run/php-fpm/php-fpm.sock;)而不是您的服务器地址和端口。
- 检查您的 SCRIPT_FILENAME fastcgi 参数并根据文件的位置进行设置。在您的 nginx 配置文件中,在定义所有其他 fastcgi 参数的位置块中包含 fastcgi_split_path_info ^(.+.php)(/.+)$;。
- 在您的 php.ini 中将 cgi.fix_pathinfo 设置为 1
(来源)