
Я не уверен, проблема ли это в конфигурации php, apache или iptables, но при попытке доступа к .php
файлу я получаю следующую ошибку. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация для диагностики, я не знаю, что проверить дальше. Спасибо.
error.log
:
[Thu May 08 16:43:15.392784 2014] [proxy:error] [pid 23112] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9000 (*) failed
[Thu May 08 16:43:15.392891 2014] [proxy_fcgi:error] [pid 23112] [client 74.164.254.206:52788] AH01079: failed to make connection to backend: 127.0.0.1
Я последовал заэто руководствои работающий PHP 5.5.9 и Apache 2.4.7
У меня загружены модули mod_proxy
и mod_proxy_so
:
# grep LoadModule /etc/apache2/apache2.conf
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/lib/apache2/modules/mod_proxy_fcgi.so
Вот директива ProxyPassMatch:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/$1
Я также пытался использовать UDS со следующей директивой, но тест конфигурации Apache жалуется на абсолютный URL:
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://127.0.0.1:80/path/to/root/
Вотiptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port- unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:finger
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT tcp -- anywhere anywhere tcp dpt:urd
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3
ACCEPT tcp -- anywhere anywhere tcp dpt:pop3s
ACCEPT tcp -- anywhere anywhere tcp dpt:imap2
ACCEPT tcp -- anywhere anywhere tcp dpt:imaps
ACCEPT tcp -- anywhere anywhere tcp dpt:submission
ACCEPT tcp -- anywhere anywhere tcp dpt:webmin
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
решение1
Проверьте, PHP-FPM
запущен ли он. В журнале ошибок указано, что apache
невозможно подключиться к 127.0.0.1:9000. Запустите его и (возможно) ошибка исчезнет.
Также проверьте, PHP-FPM
работает ли он через сокет. Возможно, он работает, но не слушает в стеке TCP/IP.
решение2
Согласно комментарию Криса, я просто хотел добавить, что если apache/php поддерживает сокетные соединения (похоже, если apache > 2.4.10, он может их поддерживать), вы также можете изменить это в своей конфигурации apache. Я проверил файл php vi /etc/php/7.0/fpm/pool.d/www.conf, чтобы увидеть, какой сокет слушает в строке listen:
listen = /run/php/php7.0-fpm.sock
Затем добавил это в мой файл /etc/apache2/sites-enabled/000-default.conf (или любой другой веб-сайт, на котором вы хотите включить эту функцию)...
<FilesMatch \.php$>
# 2.4.10+ can proxy to unix socket
# SetHandler "proxy:unix:/var/run/php?-fpm.sock|fcgi://localhost/"
# Else we can just use a tcp socket:
# SetHandler "proxy:fcgi://127.0.0.1:9000"
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost/"
</FilesMatch>
Затем перезапустите веб-сервер, и у меня появится index.php:
sudo service apache2 restart