私は現在、Firefox プラグイン tamperdata によってエクスポートされた XML ファイルを取り込んで、可能な限り制御してコードで再生できるようにする PHP クラスを作成しています。これは基本的に cURL ラッパーであり、完全なソースは次の場所にあります: https://github.com/tstrijdhorst/TamperCurl
私の問題は、私の人生ではSTDERRをファイルに出力できないことです。私は他のコードで cURL を使用してこれを何度も行ってきましたが、問題があるようには見えませんでしたが、現在は単にファイルに何も書き込んでいません。
これは私がそれを初期化する場所です:
if($this->stderrLocation != null)
{
$handle = fopen($this->stderrLocation,'a+');
curl_setopt($this->curlSession, CURLOPT_STDERR, $handle);
curl_setopt($this->curlSession, CURLOPT_VERBOSE, 2); //Verbosity 2 to actually log something to STDERR...
}
インスタンス変数 stderrLocation は、この関数によって設定されます (はい、デバッガーで確認したところ、必要な値が含まれています)。
public function setOptions($options)
{
foreach($options as $option => $value)
{
switch(strtolower($option))
{
case('cookiejarlocation'):
$this->setCookieJarLocation($value);
break;
case('stderr'):
$this->setSTDERR($value);
break;
}
}
}
値は次のようにコンストラクターに渡されます。
$tamperCurl = new TamperCurl('headers.xml',array('stderr' => '/home/shokora/stderr.txt', 'cookieJarLocation' => $this->cookieLocation));
デバッガーで見ると、コードをスキップせず、実際に関数呼び出しに入ります。また、ファイルが存在し、chmod 777 であるため、そこに書き込むことに問題はありません。
ショコラ@ショコラ ~ $ ls -la | grep stderr.txt
-rwxrwxrwx 1 ショコラ ショコラ 0 2012-05-04 13:22 stderr.txt
ここでどんな魔法が働いているのか、誰にも分かりませんか? STDERR出力が本当に必要なので、これは本当に面倒です:r