ホームページ >バックエンド開発 >PHPチュートリアル >win2003 iis が php を統合した後、環境変数を読み取ることができなくなります_PHP チュートリアル
通常であればphpinfo()のページが表示されます。ページを表示できるようになった後に発生する問題から始めましょう。
phpの問題はphpinfo()ページに表示されます。
まず、php.ini のパスが正しいかどうかを確認してください。
Q: php.ini ファイルを設定しましたが、サーバーを再起動しても効果がないのはなぜですか?
A: この問題には主に以下の状況が関係します。
最初の理由は、システムによって読み取られた php.ini ファイルが、その時点で変更した php.ini ファイルと矛盾していることです
1. 現在の設定ファイル (php.ini) は、設定ファイル ( php.ini) phpinfo()のPathオプション PHPサーバーがどのphp.iniを読み込むか
2. php.iniのファイルアクセス場所を変更したい場合は、php.iniの検索順序を参照することで、以下に示すように:
a) SAPI モジュールの場所によって指定 (Apache 2 の PHPIniDir ディレクティブ、CGI および CLI の -c コマンドライン オプション、NSAPI の php_ini パラメーター、THTTPD の PHP_INI_PATH 環境変数)
b) HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath (Windows レジストリ)場所)
c) PHPRC 環境変数
d) 現在の作業ディレクトリ (CLI の場合)
e) Web サーバーのディレクトリ (SAPI モジュールの場合) または PHP が配置されているディレクトリ (Windows 上のその他の場合)
f) Windows ディレクトリ(C:windows または C:winnt)、または --with-config-file-path コンパイル時オプションで指定された場所
3. 一般的なアプローチ: PHPRC 環境変数を設定することにより、
a) 操作: 右-クリック [マイ コンピュータ] ->[プロパティ] ->[詳細] -> ;環境変数
b) システム変数の下に、「変数名は PHPRC、変数値は php.ini のファイル パス」で新しい環境変数を作成します。 file"
2 番目の理由は、PHP が対応する拡張ライブラリを見つけられませんでした
1. PHP が見つけた拡張ライブラリの場所を確認します: phpinfo() の extension_dir オプションで確認できます
2. php.ini の extension_dir ファイル
3 番目の理由: IIS が完全に再起動されていません
1. はい php.ini の変更を有効にするには、現在のサイトを再起動するだけでなく、IIS を完全に再起動する必要があります。
2. cmd を入力し、サーバーを停止します: net stop iisadmin; サーバーを起動します: net start w3svc
Q: なぜ私の PHP は MySql 拡張ライブラリをアクティブ化できないのですか?
A: PHP5.0 以降では、MySQLデフォルトでは有効になっていないため、手動でアクティベーションを実行する必要があります。
1. PHP で MySql を実行するには、php.ini で php_mysql.dll ダイナミック リンク ライブラリをアクティブにする必要があります。さらに、MySQL クライアント リンク ライブラリである libmysql.dll ファイルにもアクセスする必要があります
2. php.ini php_mysql.dll ダイナミック リンク ライブラリの拡張子を通じてアクティブ化され、それにアクセスするには libmysql.dll ファイルを Windows システム パス PATH に配置する必要があります。libmysql.dll を system32 ディレクトリにコピーするか、新しいファイルを追加します。 PATH 環境変数へのパス。
3. 推奨されるアプローチ: PATH を設定することで将来の PHP アップグレードを容易にするには、システム環境変数の PATH の後に「libmysql.dll」が存在するフォルダーを追加します。忘れずに「;」で区切ってください
4. 【事例】 最近、サーバーがMySql拡張ライブラリを見つけることができず、プログラムの実行に失敗します。そのため、すべてのファイルを削除し、PHP サーバーを再構成してください。しかし、結局、MySql をインストールしても、MySql 拡張ライブラリをアクティブ化できませんでした。
phpinfo()で見つかった情報は次のとおりです:
PATH: c:php
PHPRC: C:php
extension_dir:c:phpext
さらに、msql、gd2などの他のライブラリをアクティブにするテストをしました、xml は、phpinfo() で正常に表示できます
これは、PHP が php_mysql.dll ダイナミック リンク ライブラリを見つけることができることを証明しており、MySql の動作のもう 1 つの条件は、MySQL クライアント リンク ライブラリをクエリできることです。 libmysql.dll ファイルに問題があるようです。
Cドライブでlibmysql.dllファイルを検索したところ、system32フォルダーとphpフォルダーにファイルがあることがわかりました。バックアップを作成した後、system32のlibmysql.dllファイルを削除しようとしましたが、ロックされていることがわかりました。削除できませんでしたが、再起動はできました。名前を何気なく変更してから、IIS を再起動したところ、サーバーは正常に動作しました。
追記:設定ファイル(php.ini)のパスがC:Windows
と表示されている場合は、php.iniファイルが読み込まれていないことを意味します。
さらに、php を IIS と統合する場合、ISAPI モードと CGI モードの 2 つの方法があることがわかりました
どちらの方法でも、phpinfo ページを表示できます
しかし、ISAPI モードを使用すると、環境変数を読み取ることができません。環境変数 PHPRC で設定された php.ini パスが見つかりません。
CGI を使用するだけなので、多くのファイルをシステム ファイルにコピーする必要はありません。