質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Windows 11

Windows 11は、Windows 10の後継バージョン。それまでのMetroデザインを廃止し、Fluentデザインを導入しています。スタートメニューの構成やウィンドウのデザインの変更の他、Androidアプリをネイティブに実行できます。

Q&A

解決済

2回答

751閲覧

Windows OS上でApacheとPHPをインストールしたPHP実行環境でどのphp.iniを読み込んでいるか知りたい

kuma_kuma0121

総合スコア5

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Windows 11

Windows 11は、Windows 10の後継バージョン。それまでのMetroデザインを廃止し、Fluentデザインを導入しています。スタートメニューの構成やウィンドウのデザインの変更の他、Androidアプリをネイティブに実行できます。

0グッド

1クリップ

投稿2023/02/11 01:37

編集2023/02/11 03:11

知りたいこと

  • phpはphp.ini無しで動くのか
  • php.iniの読み込みはApacheのPHPINIDirのパスを通せば読み込むようになるか(他に必要な作業はありますか)
  • Apacheに自動でphp.iniを検出して読み込む機能はありますか

実現したいこと

Windows OS上でApacheとPHPをインストールし、自分で作成したphp.iniファイルを使ってPHP実行環境を構築したい

前提

  • Windows 11
  • PHP 8.2.2
  • httpd-2.4.55

発生している問題・エラーメッセージ

どのphp.iniを読み込んでいるかわからない

https://www.javadrive.jp/apache/
https://www.javadrive.jp/php/

上記の記事を参考にApache、PHPをインストールし、PHPを動かすための準備をしていました

ApaheからPHPを利用できるように設定する
の設定を終え、とりあえずphpinfo()をブラウザで確認できましたが、php.iniファイルの作成と初期設定
で設定した内容が全く反映されていませんでした

該当のソースコード

反映されない具体的な例は

  • php.iniの設定元である「Configuration File (php.ini) Path」「Loaded Configuration File」が (none)もしくは no value

イメージ説明

  • extension_dirがphp.iniで設定したパスじゃない
    • php.iniでは"./"を指定(エラーが発生すると思って変更してみた)
; Directory in which the loadable extensions (modules) reside. ; https://php.net/extension-dir extension_dir = "./" ; On windows: ; extension_dir = "ext" ; [updated] ; extension_dir = "C:/php/ext"

イメージ説明

  • mbstringの拡張モジュールが有効になっていない
;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ... ... extension=mbstring

試したこと

  • php.iniを削除してもPHPは動く(ブラウザでphpinfo()の結果が出力される)
  • Apacheのhttpd.confでPHPINIDir "C:/php/"を設定するとブラウザで出力されなくなる
    • 検証ツールでは200 OKのレスポンスが返ってきており、ネットワーク→レスポンスを見るとソースコードだけが返ってきています(PHPがコンパイされずに実行されていない、ってことでしょうか)
<? phpinfo(); ?>

補足情報(FW/ツールのバージョンなど)

各サービスのパスを記載します


  • PHP... C:\php\
    • php8apache2_4.dll... C:\php\php8apache2_4.dll
    • php.ini... C:\php\php.ini
  • Apache... C:\Apache\Apache24
    • httpd.conf... C:\Apache\Apache24\conf\httpd.conf

「ここ怪しいんじゃない?」
「これやってないんじゃない?」
みたいなポイントでもいいので指摘いただけると嬉しいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma_kuma0121

2023/02/11 03:08

コメントありがとうございます! 稚拙な質問で申し訳ないです… 「知りたいこと」を3点記載しましたので可能なら知見を共有いただけると幸いです。 (改めて言語化するとググり方変えて調べられそうなので自分でも調べてみます)
otn

2023/02/12 04:35

PHPINIDir "C:/php/" とapacheの設定に書いてあり、 C:/php/php.ini が存在するのにもかかわらず、phpinfo()の出力で、 Loaded Configuration File が None ということでしょうか?
kuma_kuma0121

2023/02/23 03:05

otn様 反応いただきありがとうございます。 はい、誤認識の通りです。 ただ、自分がPHPの短縮記法を有効にしていないにもかかわらず短縮記法で書いていたため、PHPが実行されなかっただけで、自己解決しました。 反応いただきありがとうございました。
guest

回答2

0

自己解決

自己解決しました…

結論「Apacheのhttpd.confでPHPINIDirに読み込んでいたphp.iniは読み込めていた」でした。
ApacheやPHP側の設定値は記事の通りで問題なかったです。

で、なぜ「読み込めていない」と錯覚したかというとphpinfo();の書き方でした。

当初いつもの癖で短縮記法で書いてました。

<? phpinfo(); ?>

が、これはPHPとして実行させるにはphp.iniで設定する必要があることを知り、

<?php phpinfo(); ?>

に書き方を変更したところ、無事phpinfoが実行され、Loaded Configuration FileにApacheのhttpd.confでPHPINIDirに読み込んでいたphp.iniのパスが表示されました。

稚拙な質問で大変申し訳なかったですが、レスポンスいただいた方々、ありがとうございました。

投稿2023/02/23 03:00

kuma_kuma0121

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/02/23 03:34

> phpinfo()の出力で、Loaded Configuration File が None というのは嘘で、実は phpinfo() が実行されていなかったと言うことですか???
guest

0

参考情報です。

Windows 環境の場合、Sysinternals が提供している「プロセスモニター(procmon)」というツールを使うと
どのアプリがどんなリソースにアクセスしたかを調査することが出来ます。
まったくブラックボックスのアプリであれば、こういったツールを用いることで調査をすることも可能です。

■ プロセス モニター
https://learn.microsoft.com/ja-jp/sysinternals/downloads/procmon

投稿2023/02/11 12:37

cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma_kuma0121

2023/02/11 14:45

cx20様 ありがとうございます! こんなツールがあるのですね! 使ってみてphpとApacheがどういう関係になっているか確認してみます…!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問