Я установил Apache php7.0
и mysql
на машине Ubuntu 16.04, и я получаю ответ «php не запущен». Вот моя конфигурация vhost:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName www.example.com
DocumentRoot /var/www/sites/www.example.com/httpdocs
ScriptAlias "cgi-bin" "/var/www/sites/wwww.example.com/cgi-bin"
ErrorLog ${APACHE_LOG_DIR}/www.example.com.error_log
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/www.example.com.log combined
<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi-kermit /usr/lib/cgi-bin/php7-fcgi-kermit
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-kermit -socket /run/php/php7.0-fpm.kermit.sock -pass-header Authorization
<Directory "/usr/lib/cgi-bin">
Require all granted
</Directory>
</IfModule>
<IfModule mod_fastcgi.c>
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler php7-fcgi-kermit
</FilesMatch>
</IfModule>
</VirtualHost>
Когда я пытаюсь зайти на сайт, он не разбирает php, а выводит его на экран.
У кого-нибудь есть идеи?
Я избавился от всего прочего fpm, которое раньше работало с apache 2.2, и добавил эту строку в conf
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php/php7.0-fpm.kermit.sock|fcgi://localhost/var/www/sites/www.example.com/httpdocs
Теперь в журналах ошибок появляется следующая ошибка
[21 марта, среда, 13:04: 35.539499 2018] [прокси: ошибка] [pid 26569] (13) В доступе отказано: AH02454: FCGI: попытка подключиться к сокету домена Unix /var/run/php/php7.0-fpm. kermit.sock (localhost) не удалось
Разрешения выглядят правильно для розетки
srw-rw---- 1 kermit kermit 0 Mar 21 13:00 php7.0-fpm.kermit.sock=
Я не знаю, откуда у него этот знак =
Если вы используете PHP-FPM, вам следует рассмотреть возможность использования mod_proxy_fcgi
, который недавно стал доступен в Apache 2.4 и предназначен только для этого типа использования. В Запись вики Apache для PHP-FPM есть хорошее руководство, чтобы начать работу.
В mod_proxy_fcgi
документация также включает конкретные примеры для настройки PHP-FPM и Документация PHP также есть полезная информация.
Я смог исправить это, изменив группу на www-data вместе с парой других изменений, которые произошли в более поздних версиях apache-22 и 24.
Ваши права доступа к сокету неверны: "srw-rw ---- 1 kermit kermit 0 21 марта 13:00 php7.0-fpm.kermit.sock"
Вы говорите, что Apache работает с www-данными.
Вам нужно либо добавить www-data в kermit, либо изменить разрешения сокетов в конфигурации пула php-fpm на что-то вроде kermit: www-data