Debian 9 + PHP7.0-FPM + NGINX 1.10.3-1 path_info 问题
我正在使用 DigitalOcean Debian 9 + PHP 7.0 + NGINX 1.10.3-1 并尝试安装 Joomla!CMS,但在第一个安装屏幕 (example.com/installation/index.php) 中,我注意到一个损坏的图像(Joomla 徽标),它看起来像这样:
I'm using DigitalOcean Debian 9 + PHP 7.0 + NGINX 1.10.3-1 and trying to install Joomla! CMS, but at the very first installation screen (example.com/installation/index.php) I've noticed a broken image (which is the Joomla logo), and it looks like this:
该图像的 img src 属性包含/template/images/joomla.png",但该图像实际上位于/installation/template/images/joomla.png",这意味着我缺少/installation"/" 部分.
img src attribute for that image contains "/template/images/joomla.png", but the image is actually located at "/installation/template/images/joomla.png" which means I'm missing the "/installation/" part.
这是我用于 PHP 的 nginx conf 部分:
Here is my nginx conf part for the PHP:
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
/etc/php/7.0/fpm/php.ini"中的cgi.fix_pathinfo"行没有注释,值改为0.
The "cgi.fix_pathinfo" line at "/etc/php/7.0/fpm/php.ini" is uncommented and the value changed to 0.
/snippets/fastcgi-php.conf"文件包含以下内容:
And the "/snippets/fastcgi-php.conf" file contains the following:
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
我注意到在我评论 PATH_INFO 部分后图像正在加载:
I've noticed that the image is loading once I comment the PATH_INFO part:
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
但是我进一步尝试找出问题的根源都没有成功,请帮我解决这个问题.
But all my further attempts to figure out the root of the problem are unsuccessful, please help me to fix this.
推荐答案
我们的一位客户遇到了同样的问题,我们在 这篇文章.本质上,您的 try_files
行不正确.
One of our clients had the same problem, and we explained how to fix it in this post. Essentially, your try_files
line is incorrect.
顺便说一下,cgi.fix_pathinfo
必须设置为 1,而不是零(默认为 0,所以取消注释并不能解决问题.)
By the way, the cgi.fix_pathinfo
must be set to 1, and not to zero (it defaults to 0, so uncommenting it does not solve the problem.)
相关文章