【问题标题】:What is the LOCAL path to a public asset in Laravel 5? (using server.php)Laravel 5 中公共资产的本地路径是什么? (使用 server.php)
【发布时间】:2015-12-19 08:02:07
【问题描述】:

我是第一次使用 Laravel,我的 localhost 服务器遇到了问题。

部署站点后,我可以在以下地址查看我上传的图像:

www.mysite.com/storage/img/1.jpg

mysite.com 设置为 Laravel 公用文件夹。访问 mysite.com 网址会显示 laravel 欢迎页面。

现在是 localhost,它使用以下命令运行,从而运行 Laravel 服务端脚本:

php -S localhost:4000 server.php

访问 localhost:4000 url 会显示 laravel 欢迎页面。使用我的命名路由附加这个 url 会按预期运行 Laravel 路由。但我无法访问我在任何地址提到的 .jpg!即使在 laravel 视图中引用。

http://localhost:4000/storage/img/1.jpg

^返回 404 未找到页面

http://localhost:4000/public/storage/img/1.jpg

^再次返回 laravel 欢迎页面!

在使用 server.php 脚本设置本地环境时,如何引用资产或公用文件夹中的任何内容?这些路径在视图中无论是绝对路径还是相对路径都不起作用。提前致谢!

我的(未经编辑的)server.php 脚本如下所示:)

 <?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
); 

if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

【问题讨论】:

  • 你的public目录中有storage文件夹吗?
  • 是的。 /public/storage 和 /public/storage/img 用于图像

标签: php laravel localhost


【解决方案1】:

您做错了,因为在 Laravel 5 中,刀片的存储位于资源中,您还可以在其中找到 assets 文件夹和 images 文件夹。我建议你使用这种结构。 另外请不要使用 php -S 作为服务器,而是使用 mamp 、 wamp 或 xampp 等环境作为服务器。您将遇到权限问题和所有权问题。希望对您有所帮助。

【讨论】:

  • 我认为公共资产应该存储在公共文件夹中?
  • 你也可以存储在那里。但作为一家公司,我们不会使用太多。我们将资源中的资产用于刀片。例如 {!! HTML::style('resources/admin/assets/css/icons/icons.min.css') !!} 从中获取样式,{!! HTML::script('resources/admin/assets/plugins/modernizr/modernizr-2.6.2-respond-1.1.0.min.js') !!} 脚本, 用于图像。
  • 当遵从 HTML 时 {{asset('admin/img/avatars/avatar5_big.png')}} 的路径是什么?或者换一种说法,从 http:// localhost/ 的路径是什么?
  • localhost/resources/assets/admin/img/avatars/avatar5_big.png" alt="钥匙图标" class="">
  • localhost:4000/resources/assets/img/1.jpg 无法找到或访问(我当然已将文件复制到该文件夹​​中)我只是在刀片视图中看到一个损坏的图像图标。
【解决方案2】:

来自http://laravel.com/docs/master/structure

存储目录包含编译好的 Blade 模板,基于文件 会话、文件缓存和框架生成的其他文件

也许您的 {app}/storage 文件夹与您的 {app}/public/storage 文件夹存在某种冲突?考虑使用其他名称来“存储”上传的文件?

【讨论】:

  • 好点,但它不只是公共/存储forlder。我在 /public 的根目录中有其他文件夹的行为方式相同
  • 其他文件夹像什么?
  • 例如,/public/website1/index.html。这在生产服务器上完美运行,但无论我做什么都无法在 localhost 服务器上找到!
  • 那么让我告诉你:你选择了一个糟糕的第一个例子来说明为什么你不能访问某些给定的文件夹......你用来访问 /public/website1/index.html 的 url 是什么?
  • website1 是一个非 laravel 网站,位于 public 文件夹中。我以前的许多帖子都介绍了这样做的原因。可以说它们不是这里讨论的主题
猜你喜欢
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 2013-05-30
  • 2018-07-29
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多