Php fopen()未返回资源

Php fopen()未返回资源,php,Php,下面我有一段代码来确定$this->stream是否是一个资源。如果它不是一个资源,那么它应该使用fopen来创建一个资源,但它似乎不起作用 如何使$this->stream成为一个资源,我以为fopen()设计用于打开或创建一个不存在的文件。打开或创建的任何内容都应该是正确的资源?为什么我要点击代码抛出异常 if (!is_resource($this->stream)) { $this->errorMessage = null; set_error_handle

下面我有一段代码来确定$this->stream是否是一个资源。如果它不是一个资源,那么它应该使用fopen来创建一个资源,但它似乎不起作用

如何使$this->stream成为一个资源,我以为fopen()设计用于打开或创建一个不存在的文件。打开或创建的任何内容都应该是正确的资源?为什么我要点击代码抛出异常

if (!is_resource($this->stream)) {

    $this->errorMessage = null;
    set_error_handler(array($this, 'customErrorHandler'));
    $this->stream = fopen($this->url, 'a');

    restore_error_handler();

    if (!is_resource($this->stream)) {
        $this->stream = null;
        throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
    }
}

你没有收到错误信息吗?您确定错误处理程序正在捕获任何可能的错误吗?什么是
$this->url
?$this->url指向一个类似于“/var/www/site/file.log”的日志文件……我故意用“throw new”抛出的错误就是有问题的文件。我不知道为什么fopen不将文件创建为资源。有什么建议吗?
$this->errorMessage
说了什么?我假设您正在捕获由
fopen
产生的任何错误。。。?!无法打开没有此类文件或目录的流。哪个文件不存在,所以fopen应该正确创建它?目录存在吗?因为它不会创建AFAIK的目录结构。