我是PHP新手,我试图删除带图像的帖子,在删除存储驱动器中的图像之前,我必须将图像路径从http://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg更改为/ Applications / XAMPP / xamppfiles /的htdocs /微博/后/ 52 / POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg"
这就是为什么我使用str_repalace
更改imagePath,但我收到了错误
注意:未定义的变量:路径 第123行/Applications/XAMPP/xamppfiles/htdocs/twitter/post.php
警告:unlink():
中没有此类文件或目录 第126行的/Applications/XAMPP/xamppfiles/htdocs/twitter/post.php
{"消息":"已成功删除","结果":1,"状态":"图像一直都是 无法从驱动器中删除"}
我在此行中获得了未定义的路径变量
$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);
这里出了什么问题?
if (!empty($_REQUEST["uuid"]) && empty($_REQUEST["id"])) {
$uuid = htmlentities(strtolower(stripcslashes($_REQUEST["uuid"])));
$imagePath = htmlentities(($_REQUEST["imagePath"]));
$result = $access -> deletePost($uuid);
if (!empty($result)) {
$returnArray = [
"message" => "successfully deleted",
"result" => $result
];
if (!empty($imagePath)) {
$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);
if (unlink($path)) {
$returnArray["status"] = "Image has been deleted from drive";
} else {
$returnArray["status"] = "Image has been failed to be deleted from drive";
}
}
} else {
$returnArray = [
"message" => "Couldn't delete the post"
];
}
}
答案 0 :(得分:3)
以下一行:
$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path);
应该(为$path
切换$imagePath
)
$path = str_replace(
"http://localhost/",
"/Applications/XAMPP/xamppfiles/htdocs/",
$imagePath
);
但使用http://localhost/
并替换为/Applications/XAMPP/xamppfiles/htdocs/
会使其100%无法移植,一旦您将代码移到其他位置,它就会中断。
相反,您应该使用parse_url来抓取路径,而/Applications/XAMPP/xamppfiles/htdocs/
看起来就像是您的webroot的路径,忘了使用它。
<?php
$url = 'http://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg';
$path = parse_url($url, PHP_URL_PATH);
echo $path; //Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg
然后只需使用unlink($path);
它就可以正常工作,它可以使您的代码可移植。