以下代码允许我删除文件SOMETIMES。我检查了文件和文件夹的权限,它们存在并被授予适当的访问权限。有时我按下删除按钮;它删除了文件,有时它只是刷新页面,没有任何反应。我有什么办法可以使取消链接正常工作吗?我在下面的代码中遗漏了什么?这是在ZEND。
public function delimageAction()
{
$request = $this->getRequest();
if ($request->isPost()) {
// Get the image name
$imageName = $request->getParam('file');
$old = getcwd();
chdir(APPLICATION_PATH . "/../public/images/blog/"); // Change directory to the files
fclose(APPLICATION_PATH . "/../public/images/blog/" . $imageName);
// Delete it
unlink(APPLICATION_PATH . "/../public/images/blog/" . $imageName)
chdir($old); // Return to old directory
}
$this->_helper->redirector('blog', 'index');
}
答案 0 :(得分:2)
删除两个chdir
调用,因为它们没有用处,而fclose
会导致错误。除此之外,您需要检查错误日志以查看导致删除失败的原因,它可能与权限相关。您还可以检查unlink
的返回值,因为如果它不起作用,它将返回false。
正如评论中暗示的那样,您的脚本中存在相当大的安全漏洞,因为它允许恶意用户删除应用程序中的任何文件。您需要清理'file'参数以确保提供的路径位于public/images/blog/
文件夹中。
答案 1 :(得分:0)
public function delimageAction()
{
$request = $this->getRequest();
if ($request->isPost())
{
// Get the image name
$imageName = $request->getParam('file');
// Delete it
unlink(APPLICATION_PATH . "/../public/images/blog/" . $imageName)
}
$this->_helper->redirector('blog', 'index');
}