PhpファイルをApache.confファイル内のphp5-fpmに渡しますが、Apacheサーバーを再起動するとエラーメッセージが表示されます。
ProxyPassワーカー名(fcgi://127.0.0.1:9000/home/averyverylong/directoryname/tothe/www/working/directory/$ 1)が長すぎます。
私はphpファイルをphp-fpmに次の方法で渡します:
ProxyPassMatch ^/(.*\.php(/.*)?)$ \
fcgi://127.0.0.1:9000/home/averyverylong/directoryname/tothe/www/working/directory/$1
もちろん、ディレクトリ名を短くすれば問題なく動作します。ただし、これは実際にはオプションではありません。
実行中:Apache/2.4.10(Ubuntu 14.04)PHP5-FPM
私はこれに困惑していて、その回避策を見つけようとして一日を過ごしました。私のサーバースキルは最強ではありません。フィードバックをいただければ幸いです。
回避策として、長いパスへの短い名前のシンボリックリンクを作成できます。例えば:
ln -s /home/averyverylong/directoryname/tothe/www/working/directory \
/var/www/html/shortcut
次に、
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/shortcut
別の(そして私の意見では、よりエレガントな)解決策は、このApacheバグレポートで説明されているように、RewriteEngineを使用することです https://bz.Apache.org/bugzilla/show_bug.cgi?id=53218
# This directive must come before the following one in order
# block access to arbitrary URIs on the Origin server!
# As an alternative one can also use "RewriteRule /UNUSED - [F]"
ProxyPass /UNUSED !
# Configure a connection pool for the Origin server
# http://myserver.example.org:9081
ProxyPass /UNUSED fcgi://127.0.0.1:9000
RewriteEngine On
# Proxy "/long" to a long URI on the Origin server,
# [P] flag at end of line is important
RewriteRule ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/averyverylong/directoryname/tothe/www/working/directory/$1 [P]
これにより、どこにでも手動でシンボリックリンクを作成するオーバーヘッドなしに、同じファイル構造を引き続き使用できます(これは、Windowsマシンでは機能しません)。ワーカー名の制限はApacheの将来のバージョンで引き上げられると思いますが、今のところ、この回避策で希望する結果が得られるはずです。
Apacheのsymfonyドキュメントによると> = 2.4.9を使用できます
<FilesMatch \.php$>
# 2.4.10+ can proxy to unix socket
# SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
# Else we can just use a tcp socket:
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
http://symfony.com/doc/current/cookbook/configuration/web_server_configuration.html#php-fpm-with-Apache-2-2
https://serversforhackers.com/video/Apache-and-php-fpm
Ubuntuにバグが報告されました。影響を受けていることを示し、Trustyの更新をリクエストしてください。修正を安定したリリースにするには、コミュニティからの入力が必要になります。