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の出力を取得して正しいログファイルに入れるにはどうすればよいですか。
これに対するいくつかの回答によると 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
)。
curlドキュメント によると、CURLOPT_STDERRを使用してログファイルの場所を設定できます。
この完全な例を参照してください answer