サーバで稼働しているモジュール版PHPとは別バージョンのPHPを動作させる必要がある場合に、CGI版PHPを利用することが良くあります。
弊社スタッフの一人が例によってCGI版PHPをインストールしていたのですが、CGI版として動作させるPHPのconfigureが悪いのか、パスの設定が悪いのかうまく動作しないことがありましたので紹介いたします。
弊社スタッフの設定内容
弊社スタッフが行った作業は以下の通りです。
- 設定したいPHPのソースファイルを持ってきてCGI版PHPが使用できるように「–enable-cgi」オプションを付けてインストールした。
- Apache設定で特定ディレクトリに対してScriptAliasを設定し、CGI版PHPの実行ファイルを持ってきた。
- CGI版でPHPを動作させたいディレクトリで、.htaccessを使用しAddHandlerで.phpをマッピングした。
ところが実際に他のサーバで動作実績もあったにも関わらず、CGI版PHPが動作しない事態となりました。
ちなみに設置した.htaccessは以下の通りです。
# vi .htaccess ---------------------------------- Action php5-script /php-bin/php-cgi AddHandler php5-script .php ----------------------------------
上手くいった設定方法
AddHandlerではなく、SetHandlerで.htaccessに設定したところ、動作しました。
# vi .htaccess
---------------------------------------
Action php5-script /php-bin/php-cgi
<filesMatch "\.php$">
SetHandler php5-script
</filesMatch>
---------------------------------------
原因
なぜAddHandlerはダメでSetHandlerは動作したのでしょうか。
結論から言うと、AddHandlerよりもSetHandlerの方が優先されるため、.htaccessで.phpに対しAddHandler設定を行っても無視されてしまったことになります。
察しの良い方はすぐお分かりかと思いますが、RPMでインストールしたPHP5.6が生成するApache設定ファイルに以下の記述がありました。
# vi /etc/httpd/conf.d/php.conf
---------------------------------------
(途中略)
<filesMatch \.php$>
SetHandler application/x-httpd-php
</filesMatch>
---------------------------------------
今回インストールしたPHP5.6では、PHPのハンドラをマップする際にAddHandlerではなくSetHandlerを使っていました。
AddHandlerとSetHandlerの違い
では、AddHandlerとSetHandlerはどのように違うのでしょうか。
Apache公式ページによるとAddHandlerとSetHandlerは以下のように説明されています。
両方ともハンドルをマップする際に使用されますが、AddHandlerは拡張子に対してマップさせるのに対して、SetHandlerは特定のファイルに対してマップさせる違いがあります。また、SetHandlerはデフォルトのハンドラをオーバーライド(上書き)するという特徴があります。
まとめ
理由が分かってしまえばなんてことない設定ですが、設定に慣れていれば慣れているほど見落としやすいところかもしれません。
もしCGI版PHPがうまく動作しない方がいらっしゃれば、お試しください。
この記事を読んだ方はこちらも読まれています
関連記事はありません
カレンダー
- 11月 2026
- 10月 2026
- 8月 2026
- 7月 2026
- 6月 2026
- 4月 2026
- 3月 2026
- 2月 2026
- 12月 2025
- 11月 2025
- 10月 2025
- 8月 2025
- 7月 2025
- 6月 2025
- 5月 2025
- 4月 2025
- 3月 2025
- 2月 2025
- 1月 2025
- 12月 2024
- 11月 2024
- 10月 2024
- 9月 2024
- 8月 2024
- 7月 2024
- 6月 2024
- 5月 2024
- 4月 2024
- 3月 2024
- 2月 2024
- 12月 2023
- 11月 2023
- 10月 2023
- 9月 2023
- 8月 2023
- 7月 2023
- 6月 2023
- 5月 2023
- 4月 2023
- 3月 2023
- 2月 2023
- 1月 2023
- 12月 2022
- 11月 2022
- 10月 2022
- 9月 2022
- 8月 2022
- 7月 2022
- 6月 2022
- 5月 2022
- 4月 2022
- 3月 2022
- 12月 2021
- 11月 2021
- 10月 2021
- 9月 2021
- 8月 2021
- 7月 2021
- 6月 2021
- 5月 2021
- 4月 2021
- 3月 2021
- 2月 2021
- 1月 2021
- 12月 2020
- 11月 2020
- 8月 2020
- 6月 2020
- 5月 2020
- 4月 2020
- 3月 2020
- 2月 2020
- 1月 2020
- 12月 2019
- 11月 2019
- 10月 2019
- 9月 2019
- 8月 2019
- 7月 2019
- 6月 2019
- 5月 2019
- 4月 2019
- 3月 2019
- 2月 2019
- 1月 2019
- 12月 2018
- 11月 2018
- 10月 2018
- 9月 2018
- 8月 2018
- 7月 2018
- 6月 2018
- 5月 2018
- 4月 2018
- 3月 2018
- 2月 2018
- 1月 2018
- 12月 2017
- 11月 2017
- 10月 2017
- 9月 2017
- 8月 2017
- 7月 2017
- 6月 2017
- 5月 2017
- 4月 2017
- 2月 2017
- 1月 2017
- 12月 2016
- 11月 2016
- 8月 2016
- 7月 2016
- 6月 2016
- 5月 2016
- 4月 2016
- 3月 2016
- 2月 2016
- 1月 2016
- 12月 2015
- 11月 2015
- 10月 2015
- 9月 2015
- 5月 2015
- 4月 2015
- 3月 2015
- 2月 2015
- 1月 2015
- 12月 2014
- 11月 2014
- 10月 2014
- 9月 2014
- 8月 2014
- 7月 2014
- 6月 2014
- 5月 2014
- 4月 2014
- 2月 2014
- 1月 2014
- 12月 2013
- 11月 2013
- 10月 2013
- 9月 2013
- 8月 2013
- 7月 2013



![群馬の法人ITサポートサービス Wide Net[ワイドネット] 群馬の法人ITサポートサービス Wide Net[ワイドネット]](https://www.nedia.ne.jp/wp-content/themes/nedia/images/bnr_bt_widenet03.png)



