【发布时间】:2020-03-09 18:15:56
【问题描述】:
对于每个包含错误的 PHP 请求,我都会从 nginx 收到 502 服务器错误。这是 nginx 日志中针对每种类型的错误显示的内容:
[error] 394#0: *7 upstream prematurely closed connection while reading response header from upstream, client: 127.0.0.1, server: example.test, request: "GET /nova-api/users/lens/example-lens?search=&filters=W3siY2xhc3MiOiJBcHBcXE5vdmFcXEZpbHRlcnNcXExlbnNVc2VyRmlsdGVyIiwidmFsdWUiOnsiY29sdW1uIjoiMCIsIm9wZXJhdG9yIjoiPSIsImRhdGEiOiJoYXJ2ZXkifX1d&orderBy=&orderByDirection=desc&perPage=25&page=1&viaResource=&viaResourceId=&relationshipType= HTTP/2.0", upstream: "fastcgi://unix:/Users/user/.config/valet/valet.sock:", host: "example.test", referrer: "https://example.test/nova/resources/users/lens/example-lens"
如果我在任何其他系统上运行相同的代码,我的 laravel.log 文件中实际上会出现 PHP 错误。
我已经尝试增加最大 PHP 子节点的数量。
我已经尝试完全重新安装 nginx、PHP 和 Laravel Valet。
我的valet.conf nginx 文件由 Laravel Valet 自动生成:
server {
listen 127.0.0.1:80 default_server;
root /;
charset utf-8;
client_max_body_size 128M;
location /41c270e4-5535-4daa-b23e-c269744c2f45/ {
internal;
alias /;
try_files $uri $uri/;
}
location / {
rewrite ^ "/Users/user/.composer/vendor/laravel/valet/server.php" last;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log "/Users/user/.config/valet/Log/nginx-error.log";
error_page 404 "/Users/user/.composer/vendor/laravel/valet/server.php";
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass "unix:/Users/user/.config/valet/valet.sock";
fastcgi_index "/Users/user/.composer/vendor/laravel/valet/server.php";
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME "/Users/user/.composer/vendor/laravel/valet/server.php";
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
}
【问题讨论】:
-
你的 nginx confit 是什么样的?
-
增加 php 内存限制 ini fpm config,如果 php 过早关闭上游,则意味着 php 由于资源不足而崩溃,在您的情况下内存不足。也不要把unix socket文件放到磁盘文件系统,放到
/var/run/php-something.sock -
我将 PHP 内存限制提高到 2G 和同样的问题。
-
你能在 phpinfo 验证 PHP 内存限制是 2G 吗?
-
如果我运行
php -r "echo ini_get('memory_limit');"我得到 2G。
标签: php nginx laravel-valet