web-dev-qa-db-ja.com

PHPを使用したApache-FPM-PHPは実行されません

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)を取得します。

2
Sisir

問題を解決しました。以下の手順に従いました。

PHP-FPMが実行されていることを確認します

まず、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

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>

これで、example.comのすべてのphpファイルが実行されます。

参照:https://wiki.Apache.org/httpd/PHP-FPM

1
Sisir