37456


**従来の環境**  
・CentOS6  
・apache2.2  
・PHP7.1

* * *

**試したこと**  
・「CentOS Software Collections」経由で「Apache2.4」をインストール

**出来たこと**  
・Apache2.4の画面表示  
・ドキュメントルートのhtmlファイル内容表示

**出来なかったこと**  
・phpソースファイルが表示される  
・バーチャルホストが効かない

* * *

**Q1.**  
・apache2.4でPHP動作させる際、PHP-FPMは必須ですか？

**Q2.**  
・「CentOS Software
Collections」経由でインストールした場合のconfは「/opt/rh/httpd24/root/etc/httpd/conf/httpd.conf」ですか？「/etc/httpd/conf/httpd.conf」は見に行かない？


CC BY-SA 3.0
2017-08-23T03:44:59.803
37428
2017-09-20T01:27:05.537
7886
question
php centos apache
apache2.4でPHP動作させる際、PHP-FPMは必須？


[centos](/questions/tagged/centos "'centos' のタグが付いた質問を表示") は使っていないので一般論ですが

A1.  
php-fpm は FastCGI Process Manager なので [php](/questions/tagged/php "'php'
のタグが付いた質問を表示") を FastCGI で動かす場合に必要です。  
`apache httpd` から [php](/questions/tagged/php "'php' のタグが付いた質問を表示")
を使う場合には２通りあって  
\- CGI として使う (FastCGI もこっち)  
\- Module として使う  
ウチの部内サーバでは Module にしていますから php-fpm は不要ということになります。  
CGI/Module どっちを使うかはサーバ運用者の判断ですね。

`# apachectl -M` と入力するとロード済みモジュールが確認できます。ウチの部内サーバでは `php5_module (shared)`
と表示されました (php7 にアップデートしてないのはインターネットにつながってない閉鎖環境における野良ビルドのため）

A2.  
デフォルト状態、つまり `# apachectl start` とだけ入力して `apache httpd` を起動するときに使われる conf ファイルは
`# apachectl -V` で確認できます。

ウチの部内サーバの httpd 2.4.20 で `# apachectl -V` すると

[code]

    Server Compiled with....
     -D HTTPD_ROOT="/usr/local/apache2"
     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    
[/code]

なので **デフォルトでは** `/usr/local/apache2/conf/httpd.conf` が使われます。  
デーモンの起動スクリプトで明示してれば当然そっちが使われます。その辺は要確認。

おまけ  
`apache httpd` 2.4.x 系列で [php](/questions/tagged/php "'php' のタグが付いた質問を表示")
を使いたいのであれば `httpd.conf` にて（あるいは `httpd.conf` から `Include` させる追加 `conf` で）

[code]

    LoadModule php5_module  modules/libphp5.so
    PHPIniDir conf/extra
    <FilesMatch "\.(php|php5|phtml)$">
      SetHandler application/x-httpd-php
    </FilesMatch>
    
[/code]

のような記述が必要です。 (php7 なら適宜直してください)


CC BY-SA 3.0
2017-08-24T05:28:00.577
37456
2017-08-24T05:28:00.577
8589
37428
answer


  1. Apache上のPHPの動作方式は、回答1で述べられているようにmodとFastCGIがあります。
  2. ApacheのMPMがprefork以外の場合は、modでは正常に動きません。
  3. Apache2.4からは、デフォルトで使用されるMPMがeventになりました。(※)
  4. PHPをFastCGI方式で動かすためには、PHP-FPMが必要になります。
  5. Apache2.4からは、MPMの切り替えは設定ファイルの書き換え+Apache再起動で切り替えられます。

(※) Apache2.4のインストール方法によっては、デフォルトがpreforkだったりします。  
CentOS系ならyum経由で入れると、preforkがデフォルトなことが多いです。

動作中のapacheの各種確認方法  
apachectl -V | grep MPM  
apachectl -V | grep ROOT  
apachectl -V | grep conf


CC BY-SA 3.0
2017-09-20T01:27:05.537
38049
2017-09-20T01:27:05.537
25396
37428
answer