Help us understand the problem. What is going on with this article?

nginx と Apache では、動かす PHP に違いがあります(Xdebug もお忘れなく)

環境

  • Windows 10
  • PHP 7.3.10
  • Apache 2.4.41

動機

以前のプロジェクトで、nginx で PHP を動かしていました。
今回のプロジェクトでは nginx ではなく Apache で動かすことになったので、ローカルに Apache だけをインストールして既存の PHP を動かそうと思ったのですが、ブラウザからアクセスしてみたところ、PHP が動いていませんでした。

現象

動作確認のために phpinfo() にアクセスしてみたところ、PHP のソースがそのままベタで表示されてしまいました。

原因

以前のプロジェクト(nginx 環境)の PHP をそのまま流用しようと思ったのが間違いでした。
nginx で動作させるため、Non Thread Safe 版の PHP をダウンロードしていた(ことを思い出した)のです。
Apache で動作させるために、Thread Safe 版(TS 版)をダウンロードして解決しました。

やったこと

PHP が動かないので調査したところ、 php7apache2_4.dll が入っていないことが問題のようでした。
これは TS 版にしか入っていないようなので、別途 TS 版をダウンロードして、php7apache2_4.dll だけを既存の Non Thread Safe 版に移植してみましたが、動きませんでした。

更に調査したところ、どうやらその他にも Apache2 系を動かすために必要な ddl が、Non Thread Safe 版には一式含まれていないようです。
結局全部 TS 版に置き換えました。

あとは設定して、

httpd.conf
LoadModule php5_module "c:/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php"

Apache を再起動してやれば、

> httpd -k restart

きちんと動きました。

参考

おまけ

Xdebug も流用しようと思ったところ、こんなエラーが出ました。

Failed loading C:\php\ext\php_xdebug.dll

読み込めないよ、と言われています。所定のパスに php_xdebug.dll はきちんと存在しているのに。
もしやと思って調べたら、ビンゴでした。Xdebug にも Thread Safe 版と Non Thread Safe 版があるみたいです。
(以前 PHP をインストールした際に、Xdebug も合わせてインストールしたため、何も考えずに Non Thread Safe 版を選んでいました)

こちらも動かす PHP に合わせて ddl をダウンロードする必要があるのでご注意ください。
(前述の通り、今回は TS 版の PHP を使用するので、Xdebug も TS 版の ddl に置き換えました)

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away