1. ホーム
  2. php

[解決済み】file_get_contents( )が動作しない。

2022-02-20 21:40:27

質問

を使用するスクリプトがあります。 file_get_contents() リモートサーバーから json レスポンスを取得するために . 一方 file_get_contents() はローカルファイルでは正常に動作しますが、http や https では動作せず、以下のようなエラーが発生します。 file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0 infile_get_contents(https://api.domain.com/resolve.json?url=blablabla): failed to open stream: no suitable wrapper could be found ...それは専用サーバーで、私はWHMを持っています...私は試してみました。

  1. 設定 allow_url_fopen = on WHMのPHPコンフィギュレーションエディターで設定したが、うまくいかなかった。
  2. でphp.iniファイルを作成する。 allow_url_fopen = on をエラーの発生したディレクトリに配置したが、うまくいかなかった。
  3. 追加 ini_set('allow_url_fopen', 'On'); をPHPスクリプトの先頭に追加しましたが、これはうまくいきませんでした。

私は代わりにCurlを使用することができます知っているが、私はこれが動作していない理由を知りたいです。

を更新しました。

phpinfo();

は私に

allow_url_fopen Off 
allow_url_include   Off 
always_populate_raw_post_data   Off

ということは、php.iniの変更が反映されなかったということです...何が間違っているのでしょうか?

どうすればいいですか?

sshでサーバーにログインし、次のように入力します。

sudo nano /etc/php5/apache2/php.ini //<<<< ubuntu/debian server, might differ for you

を押すだけです。 "ctrl + w" と入力し "allow_url_fopen" と入力してReturnすると、おそらく最初に説明に行き着くと思いますので、何度か検索を繰り返してください。これで、エントリーを

allow_url_fopen=0

allow_url_fopen=1

プレス "ctrl + x" でファイル保存を確認し "y" .

次にタイプ

sudo service apache2 restart

これでapacheが再起動し、新しいphp.iniの設定が読み込まれるようになります。これらのステップの後、あなたは file_get_contents を外部に送信します。


サイドノート

php.ini ファイルが見つからない場合は、ロードした php.ini ファイルのパスを phpinfo()