Php 如何在symfony2中取消文件链接以进行删除
当我删除实体时,我会使用此代码删除图像Php 如何在symfony2中取消文件链接以进行删除,php,symfony,Php,Symfony,当我删除实体时,我会使用此代码删除图像 /** * @ORM\PostRemove() */ public function removeUpload() { if ($this->filenameForRemove) { unlink ( $this->filenameForRemove ); } } 但问题是如果我没有图像,它就会抛出这样的异常 Warning
/**
* @ORM\PostRemove()
*/
public function removeUpload()
{
if ($this->filenameForRemove)
{
unlink ( $this->filenameForRemove );
}
}
但问题是如果我没有图像,它就会抛出这样的异常
Warning: unlink(/home/site/../../../../uploads/50343885699c5.jpeg) [<a href='function.unlink'>function.unlink</a>]: No such file or directory i
警告:取消链接(/home/site/../../../../../../uploads/50343885699c5.jpeg)[]:没有这样的文件或目录
如果文件不存在或目录不存在,是否有任何方法可以跳过此步骤并仍然删除实体,您可以使用该实体来确保文件实际存在,并确保您有权删除该文件
/**
* @ORM\PostRemove()
*/
public function removeUpload()
{
if ($this->filenameForRemove)
{
unlink ( $this->filenameForRemove );
}
}
if ($this->filenameForRemove)
{
if (file_exists($this->filenameForRemove) &&
is_writable($this->filenameForRemove))
{
unlink ( $this->filenameForRemove );
}
}
更新
Symfony引入了文件系统组件。你可以查看文件。它说:文件系统组件为文件系统提供基本的实用程序。
例如,您可以在删除文件之前检查文件路径/目录是否存在,如下所示:
use Symfony\Component\Filesystem\Filesystem;
$filesystem = new Filesystem();
$oldFilePath = '/path/to/directory/activity.log'
if($filesystem->exists($oldFilePath)){
$filesystem->remove($oldFilePath); //same as unlink($oldFilePath) in php
}