Oli*_*Oli 4 laravel laravel-valet valet
目前,我的服务器上的 Laravel 应用程序中的文件链接遇到了问题。
我目前有一个images文件夹storage/app/public,并且我将该storage/app/public文件夹链接public到php artisan storage:link.
现在我的文件夹image.jpg中有一个images。在我的本地系统上使用时,valet我可以看到带有以下两个链接的图像:
images在我的服务器上,只有第二个有效(我认为这是正确的,因为 -directory中没有直接的文件夹public。
问题是,我在部署时经常遇到问题,因为客户无法在线查看图像(因为链接不起作用)。如果我在测试 UI 时看不到本地图像,这不会成为问题。
任何人也有这个问题,可以引导我找到某种解决方案吗?
问题是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)