我正在努力让error_page
指向PHP页面,但由于某些原因这些页面无法正常工作。我已经完成了一些研究,并且无法找到任何有这个问题的人,或任何修复它的人。
例如,假设我有以下文件结构:
/discord
-- /error
---- 404.php
---- test.php
test.php
执行正常,而404.php
则没有。如果我进入我的Nginx配置并将404错误页面从404.php
交换到test.php
,结果也会交换。 test.php
无法正常工作,404.php
工作正常。重要的是要注意,对于HTML错误页面,这非常合适。
现在,"工作不正常,"我的意思是服务器根本没有响应,或者文件真的下载到我的电脑(PHP代码和所有)。如果我尝试访问会产生其中一个错误的网页,则会收到Chrome错误ERR_INVALID_RESPONSE
:
另一方面,如果我在浏览器中直接访问该页面(即/discord/error/404.php
),则会下载该文件。看起来有些情况下访问生成错误的页面也会下载它,但我可能会弄错,因为我不记得如何复制它。
以下是/discord
别名的配置:
location /discord {
alias /var/karaoke/discord/www/html;
location ~ \.php$ {
try_files $uri /discord/error/404.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
}
error_page 404 /discord/error/404.php;
location = /discord/error/404.php {
}
error_page 403 /discord/error/403.php;
location = /discord/error/403.php {
}
error_page 500 502 503 504 /discord/error/50x.php;
location = /discord/error/50x.php {
}
}
很难记住并列出我尝试过的所有内容,但这里有一些:
try_files $rui /discord/error/404.php
位于~ \.php$
位置区块
{li> recursive_error_pages
位于~ \.php$
位置区块的开头
fastcgi_intercept_errors
~ \.php$
定义之前和之后移动error_page
位置块。感谢任何帮助。谢谢!