Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-写入文件-对一个脚本的权限被拒绝,但对同一目录中的另一个脚本的权限被拒绝_Php_Permissions_Fopen - Fatal编程技术网

PHP-写入文件-对一个脚本的权限被拒绝,但对同一目录中的另一个脚本的权限被拒绝

PHP-写入文件-对一个脚本的权限被拒绝,但对同一目录中的另一个脚本的权限被拒绝,php,permissions,fopen,Php,Permissions,Fopen,我的一个PHP脚本将数据写入文件。它执行起来没有问题。但是,我的测试代码以相同的方式调用相同的方法,并且(为了试图解决此问题)位于相同的目录中,它报告了一个: failed to open stream: Permission denied 错误 我正确执行的脚本很简单: try { $printer = new PDFPrinter(); $FDFData = $printer->assembleFDFData(5); $fdf_file = $printer-

我的一个PHP脚本将数据写入文件。它执行起来没有问题。但是,我的测试代码以相同的方式调用相同的方法,并且(为了试图解决此问题)位于相同的目录中,它报告了一个:

failed to open stream: Permission denied
错误

我正确执行的脚本很简单:

try {
    $printer = new PDFPrinter();
    $FDFData = $printer->assembleFDFData(5);
    $fdf_file = $printer->writeFDFFile($FDFData);
    $printer->downloadForm($fdf_file);
}catch(Exception $e) {
    echo $e->getMessage();
}
我的测试代码是:

    function setUp() {
        $this->printer = new PDFPrinter();
        $this->FDFData = $this->printer->assembleFDFData(5);
    }

    function testWrite() {
        try {
            $this->printer->writeFDFFile($this->FDFData);
            $this-assertTrue(true);
        } catch(Exception $e) {
            $this->assertTrue(false);
        }
    }
我知道testWrite测试代码很糟糕,但我只想让它先停止抛出异常

脚本在执行
writefdfile($this->FDFData)时抛出异常方法,因为它试图打开要写入的文件。这是失败的代码:

$fp=fopen($fdf_file,'w')
我不明白在执行相同的代码时,同一目录中具有相同权限的两个文件如何能够以不同的方式工作

我可能做错了什么


非常感谢

如何运行标准和测试代码?也许您通过apache(在浏览器中打开)运行标准代码,但直接通过php(从IDE运行)测试代码。也许apache有权限,但php没有。也许工作目录是不同的($fdf_文件包含绝对路径?)


还要注意,“未能打开流:权限被拒绝”是警告(不是致命错误),当您运行标准代码时,此警告不会停止执行。但是PHPUnit会将警告转换为异常,当您在PHPUnit下运行代码时,此警告将停止执行。

与上面的代码有什么关系。抱歉,如果不清楚的话,我已经编辑了我的帖子,以显示fopen代码是writePDFFile()方法的一部分。