在灯丝中上传文件时出现 open_basedir 限制有效的错误

问题描述 投票:0回答:1

使用 fillament tryin 上传文件 /livewire/upload-file 成功在存储应用程序 public liveware-tmp 中上传文件,但 liveware/update 得到 500 is_file(): open_basedir 限制生效。文件(/tmp/phpO5HriX)不在允许的路径内:(/var/www/www-root/data:.)公共在浏览器打开时拥有 755 权限照片,但为什么会出现此错误 enter image description here

php laravel
1个回答
0
投票

错误“

is_file(): 
open_basedir 限制生效”意味着该目录被侵入 PHP open_basedir 限制,该限制阻止任何目录被访问。如果您使用共享主机或服务器的配置不允许 PHP 以某种方式访问路径,这种情况总会发生。

以下是排除故障并解决此问题的方法:

  1. 检查 open_basedir 配置:除了手动创建之外,无法创建 resPerPage/tmp 文件夹,并且您必须将

    /tmp
    添加到其
    open_basedir
    中允许的路径列表中。这通常可以在服务器的 PHP 配置中完成 (
    php.ini
    ):

    open_basedir = "/var/www/www-root/data:/tmp"
    
  2. 重新启动服务器:更改后需要刷新脚本

    php.ini
    :重新启动Web服务器(Apache、Nginx等)。

  3. 检查 PHP 信息:要确保

    open_basedir
    已更改,您需要检查 PHP 设置。使用
    phpinfo()
    ,您将能够在程序中看到
    open_basedir
    指令中的路径。

  4. 移动临时目录(如果无法修改

    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
    
  5. 使用存储链接进行公共访问:确保您已创建用于存储的符号链接:

    php artisan storage:link
    

这些应该可以缓解

open_basedir
限制问题;从而使 Livewire 能够控制允许目录内的文件上传。让我知道这是否有效!

© www.soinside.com 2019 - 2024. All rights reserved.