Я скомпилировал 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, он будет настроен на работу на порту 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
Например, вы принимаете 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 должны выполняться.