这是特定于nginx-unit的,它是来自 NGINX 团队的一些新的迷你 Web 服务器,而不是典型的 nginx + php-fpm 组合。
我按照 nginx-unit symfony 示例一直到精确字节https://unit.nginx.org/howto/symfony/并且它可以工作,除非我尝试访问一个不存在的 PHP 文件,例如/foo/bar.php
,我得到一个日志中出现此消息的服务器 500 错误:
PHP Fatal error: Unknown: Failed opening required '/app/public/foor/bar.php' (include_path='.:/usr/share/php') in Unknown on line 0
如果我尝试访问不存在的美学 URL,例如/foo/bar
我的应用程序被击中并且使用了预期的 404 逻辑。我希望不存在的 PHP 文件生成正确的 404,但我不清楚如何使用 nginx-unit 执行此操作。
我的配置与示例基本完全相同,我将在此重复:
{
"listeners": {
"*:80": {
"pass": "routes/symfony"
}
},
"routes": {
"symfony": [
{
"match": {
"uri": [
"*.php",
"*.php/*"
]
},
"action": {
"pass": "applications/symfony/direct"
}
},
{
"action": {
"share": "/path/to/app/public/",
"fallback": {
"pass": "applications/symfony/index"
}
}
}
]
},
"applications": {
"symfony": {
"type": "php",
"user": "app_user",
"group": "app_group",
"targets": {
"direct": {
"root": "/path/to/app/public/"
},
"index": {
"root": "/path/to/app/public/",
"script": "index.php"
}
}
}
}
}
如果我不得不猜测,我会说由于match
部分原因,*.php
正在尝试在内部进行直接的 PHP 包含操作(在我的应用程序脚本被命中之前)。当错误说Unknown on Line 0
这通常意味着除了通过配置之外您无法控制的内部代码。