2012-01-27 19 views
6

これはXamppでlocalhostで完全に動作しますが、私のサーバ(host-ed.net)で試してみると、fopenはURLを開くことができません。このコードで私のサーバーでfopenが私のサーバで動作していません

<?php 
$file="http://www.google.es"; 
$gestor = fopen($file, "r") or die ("Nothing"); 
?> 

何を示していません。 php.iniの何でもかまいませんか?

EDIT:allow_url_fopenを=

EDITの場合:php.iniのではそれが解消です。私のサーバーは無効になっていましたが、現在有効になっています。答えをありがとう。

答えて

8

のfopenはallow_url_fopen php.ini settingの値を確認してください任意のURL

を開くことができません。

var_dump(ini_get('allow_url_fopen')); 

それはおそらく偽です。あなたのウェブホストに話すか、別の方法を試す必要があります。 Mabye CURLが有効になっていますか?

error_reportingdisplay_errorsの値も確認する必要があります。 PHPはURLを開くことができないことについて大声で訴えていたはずです。コードを開発している間に、両方をすべて上げて、何がうまくいかないのかを理解することができます。

+0

申し訳ありません、それを書き忘れました...それは大丈夫です。 allow_url_fopen = On – Fischer

+0

この場合、エラー報告レベルを確認し、エラーを表示できるようにします。 PHPは実際に何がうまくいかないかをあなたに伝えます。 – Charles

2

fopenでURLを開くための許可がallow_url_fopenを設定php.iniによって制御されます。 phpinfo()を使用して現在の設定を見ることができます。これは、すべてのサーバー設定を含むhtmlドキュメントをダンプします。

0

http://php.net/manual/en/function.fopen.phpとしての状態、

ファイル名はフォーム「スキーム:// ...」である場合、URLとみなされ、PHPは(またとして知られているプロトコルハンドラを検索しますラッパー)を作成します。そのプロトコル用のラッパーが登録されていない場合、PHPはスクリプト内の潜在的な問題を追跡し、filenameが通常のファイルを指定しているかのように通知する通知を出します。

したがって、私は登録されたURLのラップが存在しないと仮定し、phpはそれを存在しない通常のファイル名として扱います。

0

Curlを試してみると、Webサーバーにインストールされていれば動作します。

0

無料のホスティングアカウントをお持ちですか?ほとんどのホスティングサービスは、濫用を防ぐために、無料アカウントの発信接続を制限します。試してみてください:

$fp = fsockopen("some.alive.site", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    echo "Everything is OK"; 
    fclose($fp); 
} 

エラーメッセージが表示された場合は、発信接続を許可されていません。

0

PHP-FPMを使用している場合は、設定ファイルもpool.d/で確認してください。PHP-FPMプールは、php_admin_flag,php_admin_value,php_flagまたはphp_valueを使用してPHP設定を上書きできます。 (私たちはUbuntu 16 vpsでこれに遭遇しました)

関連する問題