代客显示错误 URL 下的文件

Oli*_*Oli 4 laravel laravel-valet valet

目前,我的服务器上的 Laravel 应用程序中的文件链接遇到了问题。

我目前有一个images文件夹storage/app/public,并且我将该storage/app/public文件夹链接publicphp artisan storage:link.

现在我的文件夹image.jpg中有一个images。在我的本地系统上使用时,valet我可以看到带有以下两个链接的图像:

  1. /图像/图像.jpg
  2. /存储/图像/image.jpg

images在我的服务器上,只有第二个有效(我认为这是正确的,因为 -directory中没有直接的文件夹public

问题是,我在部署时经常遇到问题,因为客户无法在线查看图像(因为链接不起作用)。如果我在测试 UI 时看不到本地图像,这不会成为问题。

任何人也有这个问题,可以引导我找到某种解决方案吗?

sam*_*sam 5

问题是LaravelValetDriver有一个后备测试;如果公共目录中不存在该文件,那么它将检查公共存储目录。

您可以在这里找到:

if ($this->isActualFile($storagePath = $sitePath.'/storage/app/public'.$storageUri)) {
    return $storagePath;
}
Run Code Online (Sandbox Code Playgroud)

您可以通过创建自己的 Valet 驱动程序来扩展 LaravelValetDriver 并覆盖该isStaticFile方法来防止这种行为,例如:

class NoStorageFallbackLaravelValetDriver extends LaravelValetDriver
{

    public function isStaticFile($sitePath, $siteName, $uri)
    {
        if (file_exists($staticFilePath = $sitePath. '/public' . $uri)
       && is_file($staticFilePath)) {
            return $staticFilePath;
        }

        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)