我已经在谷歌云VM上上传了一个laravel项目。除了一件事之外,一切都很好。 就像我必须从 laravel 中删除一个目录一样。但它不起作用。 在本地服务器 xamp 上它工作正常。
Storage::disk('public')->deleteDirectory('uploads/'.$video_folder_name.'/'.$category_folder_name.'/'.$videoupload->unique_number);
所有带有$符号的名称都是一个变量,它保存一个目录值名称。该目录的权限为“755”。所有者/组是:www-data www-data
要从托管在 Google Cloud VM 上的 Laravel 项目中删除目录,您可以使用文件外观而不是存储外观,特别是在处理项目文件系统中的目录时。具体方法如下:
use Illuminate\Support\Facades\File;
$directoryPath = public_path('uploads/' . $video_folder_name . '/' .
$category_folder_name . '/' . $videoupload->unique_number);
if (File::exists($directoryPath)) {
File::deleteDirectory($directoryPath);
return "Directory deleted successfully.";
} else {
return "Directory does not exist.";
}
在此代码中:
public_path()
函数提供 Laravel 项目公共目录的完整路径。
File::exists()
用于检查目录是否存在。
File::deleteDirectory()
用于递归删除目录及其所有内容。
确保在 Google Cloud VM 上运行的 PHP 进程有足够的权限来删除该目录及其内容。如果遇到权限问题,可能需要调整目录的归属和权限,或者给PHP进程用户授予适当的权限。