PHP8+Apacheの環境構築でハマった話
アプリ開発をしようと思い、自前のwindows PCにPHPの環境構築を行いました。
参考にしたサイトはこちら。1つ1つの手順が丁寧にまとめてあり、わかりやすいです。
いくつかエラーでハマってしまった箇所があるので備忘録&同じように困る人がいないように共有します。
①【コマンドプロンプトでphp -vしてもコマンドがないと言われる】
エラー内容
コマンドプロンプトで php -v すると、
「’php’ は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と怒られる。
原因と解決策
原因は私の些細なパスの記載ミスでした。
設定>システム>詳細情報といき、システムの詳細設定を開きます。
環境変数>システム環境設定>Pathを選択して編集ボタンを押下
原因は下図のC:\php-7.3.0が誤ってC:php-7.3.0になっており、正しくパスを通していなかったことでした!(phpファイルはCドライブ直下にphp-7.3.0という名前で置いています。パスは適宜皆さんのPHPフォルダの場所や名前に応じて変更してください。)
- 正:C:\php-7.3.0
- 誤:C:php-7.3.0
無事にphpコマンドが使用できるようになりました!
②Apacheの起動
Apacheをインストールし、設定まで済ませて起動させようとすると、またもやエラーが..
エラー内容
Apacheを起動するために、コマンドプロンプトを起動し、「(Apacheをインストールしたディレクトリ)\Apache24\bin\」ディレクトリまで移動してから「httpd」を実行。
「httpd: Syntax error on line 186 of C:/Apache24/conf/httpd.conf: Can’t locate API module structure `php8_module’ in file C:/php-7.3.0/php8apache2_4.dll: No error」と怒られる..
原因と解決策
「Apache24\conf\」ディレクトリに入っている「http.conf」ファイルの記載ミスでした。
前提:PHPはC:/php-7.3.0に配置。
http.confという自分の環境に合わせて設定するファイルでLoadModuleするところ。(#186行目付近)
どうやら、php7.4まではphp7_moduleだったのに、それ以降はphp_moduleと記載しなければ動かないようです。私のphpは8なのでノリでphp8_moduleと書いてしまいましたが、それが落とし穴でした。
- 正:LoadModule php_module “C:/php-7.3.0/php8apache2_4.dll” (””の中は自分の場所に適宜書き換えてください)
- 誤:LoadModule php_module “C:/php-7.3.0/php8apache2_4.dll”
ファイルを保存し、コマンドプロンプトを立ち上げなおす。
(Apacheをインストールしたディレクトリ)\Apache24\bin\」ディレクトリまで移動してから「httpd」を実行すると、うまくいきました!