我的一个PHP脚本将数据写入文件。它正在执行而没有问题。但是我的测试代码以相同的方式调用相同的方法并且(为了尝试清除此问题)位于同一目录中报告a:
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测试代码很糟糕,但我只想让它先停止抛出异常。
在尝试打开要写入的文件时,脚本在执行writeFDFFile($this->FDFData);
方法时抛出异常。这是失败的代码:
$fp=fopen($fdf_file,'w')
我不明白在执行相同代码时,具有相同权限的同一目录中的2个文件如何以不同方式工作。
我可能做错了什么?
非常感谢
答案 0 :(得分:1)
如何运行标准和测试代码?也许您通过apache运行标准代码(在浏览器中打开),但通过直接php(从IDE运行)测试代码。也许apache有权限,但php不是。也许工作目录不同($ fdf_file包含绝对路径?)。
另请注意“无法打开流:权限被拒绝”是警告(不是致命错误),当您运行标准代码时,此警告不会停止执行。但PHPUnit会将警告转换为异常,当您在PHPUnit下运行代码时,此警告将停止执行。