PHP

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

Q&A

解決済

1回答

848閲覧

PHP.ini に記述してある 拡張フォルダの所在が無視される? 格納済モジュールが読み込まれない

saya24

総合スコア258

PHP

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

0グッド

0クリップ

投稿2024/07/06 09:08

実現したいこと

WebServer:Apache2.4.41 CGI:PHP8.39 の構成で Windows10端末に PHPの動作環境を構築中です。
PHPINFO.phpで 追加したモジュール(データベース:SQLServerとやりとりするためのモジュール)が 表れている状況を達成したいのですが 読み込まれていない状況が疑われます。 
PHPINFO

発生している問題・分からないこと

上記で疑わしいと記載しましたが、PHPフォルダ内の、error.logを確認すると、Apache立上げ時に 関連モジュールの読み込みに失敗していることは 明らかです。

まるで、自分が編集している php.ini 以外に 別に読み込まれているphp.iniがあるかのような状況です。PHPフォルダ内のextフォルダを 拡張モジュールの格納ディレクトリと宣言するも無視され、タイムゾーンの定義も効いていない印象です。

エラーメッセージ

error

1[06-Jul-2024 08:22:05 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'ldap' (tried: ext\ldap (指定されたモジュールが見つかりません。), ext\php_ldap.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 2[06-Jul-2024 08:22:05 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring' (tried: ext\mbstring (指定されたモジュールが見つかりません。), ext\php_mbstring.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 3[06-Jul-2024 08:22:05 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'oci8_12c' (tried: ext\oci8_12c (指定されたモジュールが見つかりません。), ext\php_oci8_12c.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 4[06-Jul-2024 08:22:05 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'php_sqlsrv_83_ts_x64.dll' (tried: ext\php_sqlsrv_83_ts_x64.dll (指定されたモジュールが見つかりません。), ext\php_php_sqlsrv_83_ts_x64.dll.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 5[06-Jul-2024 08:22:05 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'php_pdo_sqlsrv_83_ts_x64.dll' (tried: ext\php_pdo_sqlsrv_83_ts_x64.dll (指定されたモジュールが見つかりません。), ext\php_php_pdo_sqlsrv_83_ts_x64.dll.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 6

該当のソースコード

php.in 抜粋

1extension_dir = "ext" 2date.timezone = Asia/Tokyo

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

PHPINFOで表示されていた php.ini の所在定義と自分が編集している php.iniが一致しているため、なんでだろう??と 頭を悩ますばかり。

php.iniが 記述されている文字コードとか 決まりがあるのでしょうか?(UTF-8でもボムありとなしとか) 

補足

.iniファイルの編集後、Apacheのサービス再起動や当該端末の再起動は 常に行うようにしてきています。

皆様 解決につながるご見解を頂けますと幸いです、よろしくお願いします。 

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

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

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

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

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

tezcello

2024/07/06 13:38

エラーメッセージの内容と、読み込んでいるはずのソースとが不一致という事は、「読み込んでいる『はず』のソース」は読み込まれていないという事ではないでしょうか? > PHPINFOで表示されていた php.ini の所在定義と自分が編集している php.iniが一致している 質問者さんの言を信用したいですが、期待する結果と違うのは、ナニカが違うという事なのですが... 読み込む .iniは一つだけではなく、追加出来たりしますけど? > PHPフォルダ内の、error.logを確認すると デフォルトではそこに記録されないと思うので、変更 / 設定 しているナニカがあるのでは? > CGI:PHP8.39 の構成 多分 PHP8.3.9 のタイポだと思うけれど、これを見逃しているという事は、他にも見逃しているナニカがあって、それが原因とか...と疑ってしまう... わざわざ CGI版を利用するですよね? PHPが複数存在していて、期待しているモノと違うモノが動作しているとか? CGI/FastCGI SAPI の場合は .user.ini が使われたりもしますが、その辺りは?
saya24

2024/07/08 04:57 編集

tezcelloさん、ご見解をありがとうございました。 PHPフォルダ内のextフォルダが 参照できない理由を、PHP.ini内で ext とだけ書いてることに着目して ひょっとして、環境変数に PHP.exe の所在パスを追加しておく必要があるのでは?? と推測して対応したら 無事解決することができました。
tezcello

2024/07/08 05:08

一応の解決という事で...お疲れ様でした。 > 環境変数に PHP.exe の所在パスを追加 僕だったら、環境を汚す事を避けたいので、extension_dirにフルパス(ドライブ名を含む)を指定すると思います。 > OCI8(Oracle DBとやりとりするモジュール)だけ 読み込めていない マニュアル https://www.php.net/manual/ja/oci8.installation.php には書かれていませんが、他のDB系と同じ様に読み込む順序に何かあるかもしれませんね。
saya24

2024/07/08 05:26

OCI8のモジュールについても、今しがた無事読み込めるようになりました。 読み込もうとしていたモジュールを変えたら 無事読み込めるようになった、というのが正しい表現かも知れません。 不確かではありますが PHPがVer 8.2から 8.3以降になったことで php_oci8_12c.dll ===> php_oci8_19.dll になったのかも知れません...
tezcello

2024/07/08 05:30

サポートする(要求される)バージョンってのは、関係性が微妙でなかなか情報のソースに辿り着けなくて... 完全解決という事で、おめでとうございました。
guest

回答1

0

自己解決

PHP.exe の所在パスを ユーザ環境変数に追加したら 無事 拡張モジュールの所在箇所(extension_dir = "ext")が 作用して 想定どおり PHPINFOのページに 読み込まれていなかったモジュールが現れるようになりました。

お騒がせしました。
あと一つ OCI8(Oracle DBとやりとりするモジュール)だけ 読み込めていない問題が残っていますが、問い合わせ当初読み込まれないと申し上げていたモジュールは 既に表示されるようになりましたので たので ご報告・クローズと致します。

投稿2024/07/08 04:56

saya24

総合スコア258

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問