php Laravel中使用File包删除主机上文件的问题

db2dz4w8  于 2023-04-10  发布在  PHP
关注(0)|答案(1)|浏览(113)

我的主机不支持open_basedir模块,我在删除我使用此代码删除的照片时遇到问题:

use Illuminate\Support\Facades\File;
if (File::exists($box->image))
    File::delete($box->image);

如果不起作用,我应该使用什么方法来支持主机中的open_basedir

use Illuminate\Support\Facades\File;
if (File::exists($box->image))
    File::delete($box->image);
>>> error: 
file_exists(): open_basedir restriction in effect. File(/images//Pinterest_Download (84).jpg) is not within the allowed path(s): (/home/app/:/tmp:/var/tmp:/usr/local/lib/php/)
prdp8dxp

prdp8dxp1#

首先,您的主机确实支持open_basedir。错误只是告诉您,您试图访问磁盘上的文件,由于open_basedir限制,您不允许访问该文件。
看起来你的问题是,你试图访问绝对路径。也许你可以尝试用laravels的帮助函数引用正确的目录。
当你的目录实际上位于根路径下时,你必须切换它,因为当openbasedir限制生效时,你将永远无法访问它。

use Illuminate\Support\Facades\File;
if (File::exists(storage_path($box->image))) {
  File::delete(storage_path($box->image));
}

请记住,storage_path()引用laravel项目中的storage/目录。

相关问题