web-dev-qa-db-ja.com

cURLエラーを取得して正しいログファイルに入れるにはどうすればよいですか?

Apache 2.2.22、PHP 5.3.10、およびcURL 7.2.00を使用して実行しているWebサイトがあります。Apache構成の関連部分を以下に示します。エラーがに送信されることに気付くでしょう。 _www.example.com_error.log_。

_<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # *snip*

    ErrorLog ${Apache_LOG_DIR}/example.com_error.log
    LogLevel warn
    CustomLog ${Apache_LOG_DIR}/example.com_access.log combined
</VirtualHost>
_

ただし、PHP内からcURLを使用し、curl_setopt($connection, CURLOPT_VERBOSE, true);を使用して詳細ログをオンにすると、cURLからの出力は定義したカスタムログファイルではなくApacheの_error.log_に送られます上記。これはなぜですか。また、cURLの出力を取得して正しいログファイルに入れるにはどうすればよいですか。

2
DanielGibbs

これに対するいくつかの回答によると SO質問 、すでに気づいたように、phpはデフォルトのApacheサーバーログ(error.log)にログを記録します。次のようにphpログ設定を設定できます。

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # *snip*

    ErrorLog ${Apache_LOG_DIR}/example.com_error.log
    LogLevel warn
    CustomLog ${Apache_LOG_DIR}/example.com_access.log combined

    php_flag log_errors on
    php_flag display_errors on
    php_value error_reporting 2147483647
    php_value error_log ${Apache_LOG_DIR}/php.error.log
</VirtualHost>

または、そのSO質問の1つの回答は、php.iniでerror_logディレクティブを完全に設定解除して、関連する仮想ホストのログに記録することを示しています(例:example.com_error.log)。

2
Banjer

curlドキュメント によると、CURLOPT_STDERRを使用してログファイルの場所を設定できます。

この完全な例を参照してください answer