我的 nginx Web 服务器的 error.log 文件中有很多类似这样的行:
2017/12/30 20:30:00 [error] 5620#5620: *21 connect() to unix:/var/run/hhvm/hhvm.sock failed
(111: Connection refused) while connecting to upstream, client: xxx.xxx.xxx.xxx,
server: beauchamp.me, request: "GET /test.php HTTP/1.1", upstream:
"fastcgi://unix:/var/run/hhvm/hhvm.sock:", host: "www.xxxxxxx.com"
而我无法弄清楚原因。 hhvm 似乎一直在失败,所以我的服务器恢复使用 FPM 来运行 PHP 页面。
hhvm version: HipHop VM 3.23.2 (rel)
nginx version: nginx/1.12.2
apache2 version: version: Apache/2.4.10 (Debian) (used for FPM fallback)
Linux version: Debian 8 (Jessie)
以下是我的 nginx PHP 配置:
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
proxy_intercept_errors on;
error_page 502 = @fpm;
# try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
location @fpm {
# try_files $uri /index.php;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
以及 hhvm.sock 文件的权限:
root@Debian-82-jessie-64-LAMP /var/log/nginx # ls -als /var/run/hhvm/hhvm.sock
0 srwxrw---- 1 www-data www-data 0 Dec 30 18:43 /var/run/hhvm/hhvm.sock
顺便说一句,我更喜欢使用 Unix 套接字而不是 TCP 套接字。
更新:
这是我的 hhvm server.ini 文件内容:
; php options
pid = /var/run/hhvm/pid
; hhvm specific
; hhvm.server.port = 9000
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.log.use_log_file = true
hhvm.log.file = /var/log/hhvm/error.log
hhvm.repo.central.path = /var/cache/hhvm/hhvm.hhbc
答案1
你需要做二事物:
- 配置 hhvm 来监听您在 nginx 配置中指定的相同套接字。
- 重新启动 hhvm。