使用PHP中的文件处理错误
$path = '/home/test/files/test.csv';
fopen($path, 'w')
在这里,我想通过抛出异常来添加错误处理,“找不到文件或目录”和“无权创建文件”。
我正在使用Zend Framework。
通过 fopen 和写入模式,我可以创建一个文件。但是当相应的文件夹不存在时如何处理呢?
即如果根结构中不存在files
文件夹。
如果在不允许创建文件的权限时如何抛出异常?
答案 0 :(得分:3)
这样的事情应该让你开始。
function createFile($filePath)
{
$basePath = dirname($filePath);
if (!is_dir($basePath)) {
throw new Exception($basePath.' is an existing directory');
}
if (!is_writeable($filePath) {
throw new Exception('can not write file to '.$filePath);
}
touch($filePath);
}
然后致电
try {
createFile('path/to/file.csv');
} catch(Exception $e) {
echo $e->getMessage();
}
答案 1 :(得分:0)
我建议你看一下这个链接:http://www.w3schools.com/php/php_ref_filesystem.asp
特别是方法file_exists
和is_writable
答案 2 :(得分:0)
像这样:
try
{
$path = '/home/test/files/test.csv';
fopen($path, 'w')
}
catch (Exception $e)
{
echo $e;
}
PHP会echo
出现错误。
虽然您也可以使用is_dir
或is_writable
函数来查看文件夹是否存在且分别拥有权限:
is_dir(dirname($path)) or die('folder doesnt exist');
is_writable(dirname($path)) or die('folder doesnt have write permission set');
// your rest of the code here now...
答案 3 :(得分:0)
但是当相应的文件夹不存在时如何处理呢?
当文件夹不存在时...尝试创建它!
$dir = dirname($file);
if (!is_dir($dir)) {
if (false === @mkdir($dir, 0777, true)) {
throw new \RuntimeException(sprintf('Unable to create the %s directory', $dir));
}
} elseif (!is_writable($dir)) {
throw new \RuntimeException(sprintf('Unable to write in the %s directory', $dir));
}
// ... using file_put_contents!