2011-04-06 15 views
0

これは文字通り何時間も私を悩ませています。ファイルに出力するときにPHPのカールはデータをダウンロードできませんが、標準出力に出力するときはOKです

PHP cURLがファイルにデータをダウンロードしない理由がわかりません。 (CURLOPT_FILEはローカルファイルに設定されています)。データが取得されません。私は定期的に宛先ファイルのファイルサイズをチェックし、それは常にゼロです。あなたに背景を与えるために、私は90kbのjpegファイルをダウンロードしています(テスト目的のために)。

これは私のローカルコンピュータ(XP)で動作していますが、私が作業しているWebサイト(Windows Server 2003)では動作していません。

シナリオをさらに奇妙にするいくつかのテストを行いました。

  1. 標準出力にカールによって返されたデータ、およびを印刷したバイナリデータを印刷するためのI無効CURLOPT_FILE。

  2. 以前は(サーバーがアクセス制御を実装しているため)ブロックされたWebサイトを経験していたので、Internet Explorerからファイルにアクセスしようとしましたが、そのファイルを確認できました。

  3. 以前にブロックされたダウンロードを経験しましたが、Internet Explorerからファイルをダウンロードしようとしましたがダウンロードされました。

  4. ファイルはfopen( ''、 'w')で作成されますが、サイズは0のままです。このファイル作成に成功したにもかかわらず、PHPがファイルシステムの書き込み権限に問題があると思われ、管理者以外のユーザーであってもまだダウンロードはありません。

誰にでもこれが発生しましたか?

何か指摘します。私は本当に立ち往生している。

ありがとうございます。

ここで私が設定カールオプションです:

$connection = curl_init($src); 

// If these are not set, curl_exec outputs data. 
// If these are set, curl_exec does not send any data to the file 
// pointed to by $file_handler. $file_handler is not null 
// because it is opened as write (non-existing file is created) 

curl_setopt($connection, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($connection, CURLOPT_FILE, $file_handler); 

がPS:私は、ブラウザのコマンドラインを使用してこれらのテストをやっていないよが。

+0

私はまだこれを理解できません。その間、データを自分でファイルに保存しました。 RETURNTRANSFERがtrueに設定されているため、バイトはカールから戻されました。これらはfwriteを使ってファイルに書き出されました。 私は本当にこれを避けて、cURLにバッファリングをさせたいと思いましたが(もしあれば)。 –

答えて

1

ファイルに書き込む権限がない可能性があります。

+0

また、PHPのバージョンを確認してください。 phpのバージョンによっては、curlが失敗することがあります(別の方法、何でも、追加のオプションが途中で追加されます)。ファイルの書き込みにどのレベルのphpがあるか、どのユーザによって実行されたのか、 777にchmodそれを本当に保証するために、writiingの前に常にファイルに触れ、chmodしてください – jpalala

1

私はCURLOPT_RETURNTRANSFERを設定する必要はないと思います。コマンドラインから実行している場合は、必ずadmin権限でphpを実行してください。それはどのようにWindowsで動作しているのかわからないが、私はいつも私が実行するすべてのコマンドラインスクリプトをsudoする。

また、phpセーフモードがオンの場合は、そのディレクトリにphpファイルと同じ(UID)所有者も指定してください。しかし、あなたはファイルを(0ファイルサイズで)作成することができるので、権利とは関係ないかもしれません...サーバ上の* open_basedir * php設定を確認できますか?それが設定されている場合、cUrlはファイルプロトコルを使用することはできません...サーバーからログファイルをチェックしましたか?多分エラーがあります。

0

phpスクリプトを実行しているユーザー(phpを呼び出すユーザー)がファイルのディレクトリに書き込む権限を与えられていない場合や、/ path/to /ファイルにアクセスするには、ファイルのアクセス許可を調整する必要があります。

関連する問題