使用 fillament tryin 上传文件 /livewire/upload-file 成功在存储应用程序 public liveware-tmp 中上传文件,但 liveware/update 得到 500 is_file(): open_basedir 限制生效。文件(/tmp/phpO5HriX)不在允许的路径内:(/var/www/www-root/data:.)公共在浏览器打开时拥有 755 权限照片,但为什么会出现此错误
错误“
is_file():
open_basedir 限制生效”意味着该目录被侵入 PHP open_basedir 限制,该限制阻止任何目录被访问。如果您使用共享主机或服务器的配置不允许 PHP 以某种方式访问路径,这种情况总会发生。
以下是排除故障并解决此问题的方法:
检查 open_basedir 配置:除了手动创建之外,无法创建 resPerPage/tmp 文件夹,并且您必须将
/tmp
添加到其 open_basedir
中允许的路径列表中。这通常可以在服务器的 PHP 配置中完成 (php.ini
):
open_basedir = "/var/www/www-root/data:/tmp"
重新启动服务器:更改后需要刷新脚本
php.ini
:重新启动Web服务器(Apache、Nginx等)。
检查 PHP 信息:要确保
open_basedir
已更改,您需要检查 PHP 设置。使用 phpinfo()
,您将能够在程序中看到 open_basedir
指令中的路径。
移动临时目录(如果无法修改
php.ini
):如果您无法编辑php.ini
,请为 Livewire 提供一个新的上传目录,用于存放动态创建的临时文件。在您的 config/livewire.php
中,将 temporary_file_upload.directory
路径设置为允许路径中的目录,如下所示:
'temporary_file_upload' => [
database<string> ‘directory’ => ‘storage/app/livewire-temp’
],
通过运行确保此目录可写:
chmod -R 755 storage/app/livewire-temp
使用存储链接进行公共访问:确保您已创建用于存储的符号链接:
php artisan storage:link
这些应该可以缓解
open_basedir
限制问题;从而使 Livewire 能够控制允许目录内的文件上传。让我知道这是否有效!