CentOS 7.x環境で このチュートリアル を使用してFPMサポート付きのPHP 7をコンパイルしました。
を実行することで、CLIを介してphpをテストすることができました。
_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を作成し、ドメインをディレクトリに誘導しました。関数phpinfo()
を使用してphpファイル_info.php
_を貼り付けましたが、サーバーはPHP関数を実行せずに出力します。
私は今本当に近くにいると感じており、php-fpmで実行するようにApacheを構成する必要があるので、この構成を_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>
_
_apachectl -t -D DUMP_MODULES
_を実行すると、fcgiモジュールがインストールされます。fcgid_module (shared)
を取得します。
問題を解決しました。以下の手順に従いました。
まず、php-fpmの代替ポートを選択していない場合は、ポート9000で実行するように設定されます。
/etc/init.d/php-fpm start
または
/etc/init.d/php7.x-fpm start
ポートがすでに占有されているというメッセージが表示されない場合は、ポートで実行されているプロセス番号を調べてkillする必要があります。
netstat -tulpn | grep :8999
これにより、現在実行中のプロセスIDがわかります。たとえば、プロセスIDが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>
これで、example.comのすべてのphpファイルが実行されます。