断断续续的联系不起作用

时间:2012-11-26 22:59:22

标签: php zend-framework delete-file unlink

以下代码允许我删除文件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');
}

2 个答案:

答案 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');
}