所以总之我试图让PHP脚本来侦听通过unix套接字的请求,并从另一个PHP脚本发送请求。 我已经配置PHP-FPM这样:PHP听unix套接字
[a]
; Unix user/group of processes
user = www
group = www
listen = /var/run/php-fpm-a.sock
;listen.backlog = -1
listen.owner = www
listen.group = www
listen.mode = 0660
; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 3
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 500
; host-specific php ini settings here
php_admin_value[open_basedir] = /usr/local/www/a
php_flag[display_errors] = on
/usr/local/www/a contains the following index.php:
<?php
echo 'test\ntest\ntest\n';
有一个在/var/run/php-fpm-b.sock
和Nginx的点,有效地听它(该位工作正常)另一个PHP-FPM配置文件,这包含在/usr/local/www/b/index.php
下面的代码:
echo 'TEST B';
$fp = fsockopen('unix:///var/run/php-fpm-a.sock', -1, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /index.php HTTP/1.1\r\n";
$out .= "Host: localhost\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
显然,我有/usr/local/www/b/index.php出事了我得到的是“TEST B”作为输出。我不认为这是一个套接字权限问题,因为它会声明一个错误,我的猜测是$out
这是错误的工作,但不知道什么PHP除了接收。任何帮助,将不胜感激。
注意:在使用上FreeBSD11
Nginx使用'FastCGI'协议与PHP-FPM进程进行通信。为什么你想通过HTTP来做到这一点? –
忽略Nginx,该部分工作正常,我基本上希望一个PHP脚本通过unix套接字连接到另一个脚本,就好像一个是客户端,另一个服务器如果可能则不通过Nginx。 – FireLeopard
我的意思是,你必须使用'FastCGI'原型,同时与第二个脚本进行通信。 –