代客显示错误的文件 Url
Valet showing files under wrong Url
目前 运行我的服务器上的问题 link 我的 Laravel 应用程序中的文件。
我目前在 storage/app/public
中有一个 images
文件夹,我 link 使用 php artisan storage:link
将 storage/app/public
文件夹编辑到 public
。
现在 images
文件夹中有一个 image.jpg
。
在我的本地系统上使用 valet
时,我可以看到带有拖车的图像 links:
- /images/image.jpg
- /存储/images/image.jpg
在我的服务器上只有第二个有效(我认为这是正确的,因为 public
目录中没有直接的 images
文件夹。
问题是,我在部署时经常 运行 遇到问题,因为客户无法在线查看图像(因为 link 不工作)。如果我在测试 UI.
时看不到本地图像,这将不是问题
任何人也有这个问题,可以引导我找到某种解决方案吗?
使用 public 磁盘很简单,开箱即用。
public 磁盘使用 'local' 驱动程序,默认情况下使用 storage/app 目录。
命令:
php artisan storage:link
将在您的 public 文件夹中创建一个符号 link 'storage',该文件夹 link 到 non-public 文件夹 storage/app/public.
当link工作时,可以使用以下命令:
Storage::disk('local')->put('public/file.txt', 'Contents');
这会将 file.txt 存储到
storage/app/public/file.txt
您将不会在 storage/app/public.file.txt 访问该文件,而是使用 symlink public/storage 访问它...
因此您保存的文件public只能在
访问
public/storage/file.txt
使用资产助手可以获取文件的位置:
echo asset('file.txt');
问题是 LaravelValetDriver 有回退测试;如果 public 目录中不存在该文件,那么它将检查 public 存储目录。
你可以发现 here:
if ($this->isActualFile($storagePath = $sitePath.'/storage/app/public'.$storageUri)) {
return $storagePath;
}
您可以通过扩展 LaravelValetDriver 并覆盖 isStaticFile
方法的 creating your own Valet Driver 来防止这种行为,例如:
class NoStorageFallbackLaravelValetDriver extends LaravelValetDriver
{
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath. '/public' . $uri)
&& is_file($staticFilePath)) {
return $staticFilePath;
}
return false;
}
}
目前 运行我的服务器上的问题 link 我的 Laravel 应用程序中的文件。
我目前在 storage/app/public
中有一个 images
文件夹,我 link 使用 php artisan storage:link
将 storage/app/public
文件夹编辑到 public
。
现在 images
文件夹中有一个 image.jpg
。
在我的本地系统上使用 valet
时,我可以看到带有拖车的图像 links:
- /images/image.jpg
- /存储/images/image.jpg
在我的服务器上只有第二个有效(我认为这是正确的,因为 public
目录中没有直接的 images
文件夹。
问题是,我在部署时经常 运行 遇到问题,因为客户无法在线查看图像(因为 link 不工作)。如果我在测试 UI.
时看不到本地图像,这将不是问题任何人也有这个问题,可以引导我找到某种解决方案吗?
使用 public 磁盘很简单,开箱即用。
public 磁盘使用 'local' 驱动程序,默认情况下使用 storage/app 目录。
命令:
php artisan storage:link
将在您的 public 文件夹中创建一个符号 link 'storage',该文件夹 link 到 non-public 文件夹 storage/app/public.
当link工作时,可以使用以下命令:
Storage::disk('local')->put('public/file.txt', 'Contents');
这会将 file.txt 存储到
storage/app/public/file.txt
您将不会在 storage/app/public.file.txt 访问该文件,而是使用 symlink public/storage 访问它...
因此您保存的文件public只能在
访问public/storage/file.txt
使用资产助手可以获取文件的位置:
echo asset('file.txt');
问题是 LaravelValetDriver 有回退测试;如果 public 目录中不存在该文件,那么它将检查 public 存储目录。
你可以发现 here:
if ($this->isActualFile($storagePath = $sitePath.'/storage/app/public'.$storageUri)) {
return $storagePath;
}
您可以通过扩展 LaravelValetDriver 并覆盖 isStaticFile
方法的 creating your own Valet Driver 来防止这种行为,例如:
class NoStorageFallbackLaravelValetDriver extends LaravelValetDriver
{
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath. '/public' . $uri)
&& is_file($staticFilePath)) {
return $staticFilePath;
}
return false;
}
}