0

execを使用してcurl出力を取得しています(Linuxコマンドとしてcurlを使用する必要があります)。

php_cliを使用してファイルを開始すると、curl出力が表示されます。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 75480  100 75480    0     0  55411      0  0:00:01  0:00:01 --:--:-- 60432

これは、すべてのファイルが正しくダウンロードされたことを意味します(〜75KB)。

私はこのコードを持っています:

$page = exec('curl http://www.example.com/test.html');

私は本当に奇妙な出力を取得します、私は取得するだけです:</html>

(これで私のtest.htmlファイルは終わりです)

理由はよくわかりません。CURLはすべてのファイルをダウンロードしているようですが、$ pageでは7文字(最後の7文字)しか取得できません。

なんで?

PS他のphp関数を使用してソースコードをダウンロードできることは知っていますが、curlを(Linuxコマンドとして)使用する必要があります。

4

2 に答える 2

4

これが本当に奇妙な要件でない限り、代わりに PHP cURL ライブラリを使用しない理由はありません。呼び出しパラメーター (タイムアウトなど) と同様に、何が起こるかをより細かく制御できます。

PHP から curl コマンド ライン バイナリを使用する必要がある場合:

1) Use shell_exec() (this solves your problem)
2) Use 2>&1 at end of command (you might need stderr output as well as stdout)
3) Use the full path to curl utility: do not rely on PATH setting.
于 2012-07-22T11:18:20.187 に答える
4

のRTMexec()

戻る

コマンドの結果の最後の行。

exec()実行されたコマンドからのすべての出力が含まれるように、2 番目のパラメーターを に設定する必要があります。

例:

<?php
$allOutputLines = array();
$returnCode = 0;
$lastOutputLine = exec(
    'curl http://www.example.com/test.html',
    $allOutputLines,
    $returnCode
);

echo 'The command was executed and with return code: ' . $returnCode . "\n";
echo 'The last line outputted by the command was: ' . $lastOutputLine . "\n";
echo 'The full command output was: ' . "\n";
echo implode("\n", $allOutputLines) . "\n";

?>
于 2012-07-22T11:12:01.270 に答える