У меня есть такая настройка в Debian: apache 2.4 proxy_fcgi и php-fpm (v5.5). В моем файле виртуального хоста у меня есть:
DocumentRoot /var/www/html
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi://./var/www/html
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
и все работает нормально, я вижу phpinfo () и каждый php-файл, который я запрашиваю в / var / www / html /.
Я продолжаю установку phpmyadmin из репозитория Debian, но когда я захожу на http: //MY.IP/phpmyadmin , я получаю ошибку «Файл не найден» и ошибку apache log
"[proxy_fcgi:error] AH01071: Got error 'Primary script unknown\n'"
Пакет Debian phpmyadmin выводит содержимое в / usr / share / phpmyadmin. Если я создаю файл test.html в / usr / share / phpmyadmin, я могу увидеть его содержимое из http: //MY.IP/phpmyadmin/test.html
Проблема в том, что Файлы php в / usr / share / phpmyadmin не обрабатываются. Конфигурация Apache phpmyadmin:
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
Options FollowSymLinks
DirectoryIndex index.php
AddType application/x-httpd-php .php
SetHandler application/x-httpd-php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/
...
и загружается в файл конфигурации Apache.
Так как mod_php не установлен, обработка php-файлов не производится. Как я могу сказать apache использовать proxy_fcgi для обработки файлов php в каталоге / usr / share / phpmyadmin?
>> update Я добавил директиву proxypassmatch в phpmyadmin apache's conf
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ unix:/var/run/php5-fpm.sock|fcgi:///usr/share/phpmyadmin/
ожидаю работы, но я продолжаю получать ту же ошибку.
>> update 2 Я заменил сокет unix php-fpm на сеть (127.1: 9000) и заменил ProxyPassmatch файла virthualhost на:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
и в phpmyadmin's apache conf:
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin/$1
ProxyPassMatch ^/phpmyadmin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/usr/share/phpmyadmin$1index.php
и все работает .. когда я захожу на MY.IP / phpinfo.php, я получаю phpinfo из /var/www/html/phpinfo.php и когда посещаю MY.IP /phpmyadmin/phpinfo.php Я получаю обработанное содержимое /usr/share/phpmyadmin/phpinfo.php.
Моя проблема решена, но я до сих пор не понимаю, почему работает сетевое соединение с php-fpm, а сокет unix - нет.