1

我目前正在编写一个 PHP 类,它接收由 firefox 插件 tamperdata 导出的 XML 文件,并让您在代码中尽可能多地控制它们。这基本上是一个 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 所以写入该文件应该没有问题:

shokora@shokora ~ $ ls -la | grep stderr.txt

-rwxrwxrwx 1 shokora shokora 0 2012-05-04 13:22 stderr.txt

有人知道这里有什么魔法吗?这真的让我很烦,因为我真的需要 STDERR 输出:r

4

0 回答 0