【发布时间】:2015-07-04 04:30:05
【问题描述】:
我的一个 CMS 解决方案中有一个多重删除功能,并且我有以下代码:
public function actionDelete() {
if(Yii::app()->request->isPostRequest) {
if(isseT($_POST['submit'])) {
if(isset($_POST['delete']) && (sizeof($_POST['delete']))) {
foreach($_POST['delete'] as $i => $items) {
$model[$i] = Pages::model()->findByPk((int)$items);
if(!is_null($model[$i])) {
$image[$i] = $model[$i]->image;
if($model[$i]->delete()) {
if(!unlink($image[$i])) {
die('Unable to delete Page Image.');
}
}
}
}
}
}
}
$this->redirect('/admin/pages');
}
这是 Yii 控制器的操作,在每一页的“图像”字段/列中都有一个值。
在我使用发布数据调用此操作后,它实际上从数据库表中删除了记录,但它没有从文件系统中删除图片和图像,并且脚本从未出现过这一点:die('Unable to delete Page Image.');
PHP 是否有可能剥离并忽略 unlink 函数,主要是在生产/实时服务器上?
【问题讨论】:
-
在
unlink之前调用is_file以确保它确实存在,可能是路径问题 -
蜘蛛侠写了这段代码?这么多嵌套的 if 循环......哎呀
-
不,这不是问题!我通常将文件的完整路径存储在“图像”列中!
-
@robert - 我可以在一个 IF 条件中设置所有这些条件,但这不利于可读性!
-
如果有一天你换了服务器,你的路径变了怎么办:) 无论如何,你确定
is_file返回true,你可以快速检查吗? :)