在让我列出我尝试过的内容之前:
我在我的主目录中的子目录上执行php代码时遇到问题。 在Nginx上我得到了这个
2016/08/23 09:13:40 [error] 39170#0: *13 FastCGI sent in stderr: "Access to the script
'/Users/user/portal3' has been denied (see security.limit_extensions)" while reading
response header from upstream, client: 127.0.0.1, server: localhost, request:
"GET /portal/v3/index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9001", host: "localhost"
在php-fpm上显示
[23-Aug-2016 09:13:40] WARNING: [pool dev] child 8305 said into stderr: "NOTICE: Access to the script '/Users/user/portal3' has been denied (see security.limit_extensions)"
我已经尝试了一切,但我没有在Mac上使用Nginx / PHP-FPM运行php取得任何成功
Ngnix和PHP-FPM以root身份运行
PHP-FPM配置了两个池:
[dev]
user=user
group=staff
listen=127.0.0.1:9001
listen.mode = 0666
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 10s
pm.status_path = /status_user
catch_workers_output = yes
security.limit_extensions = .php
server {
listen 80;
server_name localhost;
###root /var/www/;
access_log /usr/local/etc/nginx/logs/default.access.log main;
access_log /usr/local/etc/nginx/logs/default.scripts.log scripts;
location /portal/v3 {
alias /Users/user/portal3;
location ~ ^/portal/v3/(.+\.php)(/.*)$ {
#alias /Users/user/portal3;
index index.php;
# Mitigate https://httpoxy.org/ vulnerabilities
fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$2;#$fastcgi_script_name;
include fastcgi_params;
}
}
location = /info {
allow 127.0.0.1;
deny all;
rewrite (.*) /.info.php;
}
location / {
root /var/www/;
index index.php index.html index.htm;
include /usr/local/etc/nginx/conf.d/php-fpm;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
我已经使用自制软件安装了一切。现在我的想法已经不多了,我来这里是为了得到一些帮助。
答案 0 :(得分:0)
在您的PHP-FPM config中,您有一个名为security.limit_extensions
限制FPM允许解析的主脚本的扩展名。这可以防止Web服务器端的配置错误。您应该只限制FPM到.php扩展名,以防止恶意用户使用其他扩展来执行PHP代码。默认值:.php。
在您的情况下,因为您的location
块不包含index
指令,所以当路径指向{时,nginx不知道使用index.php
作为默认索引文件{1}}。相反,它尝试将其作为PHP脚本执行,并且PHP-FPM引发了/Users/user/portal3
没有.php扩展名的安全限制。
您的位置区块看起来应该更像......
/Users/user/portal3
答案 1 :(得分:0)
我今天早些时候也遇到了这个问题。我只是将文件扩展名从.phtml重命名为.php即可立即修复。
稍后,我在php配置文件(如/etc/php/fpm/php-fpm.conf之类的文件)中更改了“ security.limit_extensions”设置,以允许.phtml(请参见下面的行)
security.limit_extensions = .php .phtml
此行也可能带有#注释,如果这样的话,只需删除#即可取消注释该行
答案 2 :(得分:0)
只需要添加FastCGI参数PATH_INFO和PATH_TRANSLATED。
0
希望这也能帮助任何需要它的人。