Назад | Перейти на главную страницу

Apache с PHP-FPM - PHP не выполняется

Я скомпилировал PHP 7 с поддержкой FPM, используя этот учебник в среде CentOS 7.x.

Мне удалось протестировать php через CLI, запустив.

cd /opt/php7/bin
./php --version

Какие выходы

PHP 7.0.6 (cli) (built: May 22 2016 07:20:48) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Я также установил apache, и он успешно работает.

Теперь я создал vhosts и направил домен в каталог. Я вставил файл php info.php с функцией phpinfo() но сервер выводит функцию PHP, не выполняя ее.

Я чувствую, что сейчас действительно близок, и мне просто нужно настроить apache для работы с php-fpm, поэтому я помещаю эту конфигурацию в httpd.conf файл, но это не помогает.

<IfModule mod_fastcgi.c>

    DirectoryIndex index.html index.shtml index.cgi index.php

    AddType application/x-httpd-fastphp7 .php
    Action application/x-httpd-fastphp7 /php7-fcgi

    Alias /php7-fcgi /opt/php7/bin/php-cgi

    FastCgiExternalServer /var/www/html/ -socket /opt/php7/var/run/php-fpm.pid -pass-header Authorization

    <Directory /var/www/html/>
        Require all granted
    </Directory>
</IfModule>

модуль fcgi устанавливается из-за того, что я запускаю apachectl -t -D DUMP_MODULES я получил fcgid_module (shared)

Решил проблему. Я выполнил следующие шаги.

Убедитесь, что PHP-FPM запущен

Прежде всего, если вы не выбрали альтернативный порт для php-fpm, он будет настроен на работу на порту 9000.

/etc/init.d/php-fpm start

или

/etc/init.d/php7.x-fpm start

Если он не сообщает, что порт уже занят, вам нужно будет узнать номер процесса, который выполняется портом, и убийство Это.

netstat -tulpn | grep :8999

Это должно дать вам идентификатор процесса, который в настоящее время запущен. Например, если идентификатор процесса 21190 тогда ты бежишь

kill 21190

Теперь, когда порт очищен, вы можете попробовать запустить php-fpm очередной раз

/etc/init.d/php-fpm start

Обновите файл конфигурации vHost

Например, вы принимаете example.com. Теперь откройте конфигурацию vhost для домена. Вот простейший пример.

<VirtualHost *:80>
    DocumentRoot "/var/www/html/example.com/"
    ServerName example.com
</VirtualHost>

Теперь добавьте обновите его следующим образом:

<VirtualHost *:80>
    DocumentRoot "/var/www/html/example.com/"
    ServerName example.com

    # Setup php-fpm to process php files
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/example.com/$1
    DirectoryIndex /index.php index.php
</VirtualHost>

И теперь все ваши php-файлы для example.com должны выполняться.

Ссылка: https://wiki.apache.org/httpd/PHP-FPM