php がドメイン名を解決できない問題の解決策: 1. ターミナル コマンド ラインを使用して、「# php -r "echo(gethostbyname('...'));";」コマンドを実行します。 ; 2. 「libnss_dns .so.2 libnss_files.so.2 libresolv.so.2」を仮想ホスト ディレクトリの lib にコピーするように変更します; 3. 「# amh php restart xxx.com」で php を再起動します。
このチュートリアルの動作環境: linux5.9.8 システム、PHP バージョン 8.1、Dell G3 コンピューター。
php がドメイン名を解決できない場合はどうすればよいですか?
PHP でのドメイン名解決が失敗する問題について
仮想ホスト パネルを使用してシステムを管理する場合、特に amh パネルに注意してください。 !
私はここ数日、死ぬほど苦しみました。amh パネルをインストールした後、gethostbyname、curl、電子メールの送信、その他の機能など、ドメイン名解決を使用するすべての機能が失敗します。URL である限り、はドメイン名です。すべて失敗します。IP アドレスに変更するだけです。最初は DNS の問題かと思いました。確認したところ、使用されているのは 8.8.8.8 と 8.8.4.4 であることがわかりました。さらに、それらに ping を送信すると、ドメイン名も IP アドレスを正しく返すことができます。NSlookup も正常です。最も奇妙な点は、はい、ターミナル コマンド ラインを使用して実行します:
# php -r "echo(gethostbyname('www.baidu.com'));";
実際に IP を返すことができるので、amh を目指しました。それはその問題のはずです。長い間オンラインで検索し、多くの人に尋ねましたが、見つかりませんでした。解決策は、後で偶然 chroot のことを知りました。Baidu で検索した後、このことがスイッチを切り替えることがわかりましたシステム環境を指定したディレクトリにコピーします。ディレクトリ外のシステム環境は使用できません。DNS 解決も含まれます。それが徐々に明らかになりました。そこで、DNS を解析するためにどのライブラリが必要かを確認しました。主に次の 3 つです:
libnss_dns.so.2 libnss_files.so.2 libresolv.so.2
Nowここで重要なのが、AMH パネルです。同じ問題が発生した場合は、確認してください。仮想ホスト ディレクトリ :/home/wwwroot/xxx.com/ に移動します。etc、lib、usr、web、tmp があります。上記の 3 つのライブラリを仮想ホストの lib ディレクトリにコピーします
# cp /lib/i386-linux-gnu/libnss_* /home/wwwroot/xxx.com/lib/
今すぐ再試行してください。成功しましたか?
ああ、あまり話すと涙が出てしまいます...
---------------------- --- ---
PS: 最後のステップが完了したら、必ず php、amh、ダイレクト コマンドを再起動してください:
# amh php restart xxx.com
推奨学習: 「PHP ビデオ チュートリアル##」 #"
以上がphp がドメイン名を解決できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。