【问题标题】:CakePHP 3.x Access Images from URLCakePHP 3.x 从 URL 访问图像
【发布时间】:2018-12-18 23:08:42
【问题描述】:

CakePHP 版本:3.6 系统:Windows 10 WampServer 3.1.3 (Apache)

我在从 url 访问图像时遇到问题,即如果我输入: http://www.n.co.nz/img/someimage.png 找不到 404。我绝对可以在 CakePHP 2.0 中做到这一点,但在 CakePHP 3.6 中却无法做到。

图片“someimage.png”存储在project/webroot/img/someimage.png中

我可以直接通过 url 访问 css 文件,即 http://n.co.nz/css/template_pages.css

使用 cakePHP 方式时图像加载正常,即

<?= $this->Html->image('someimage.png'); ?>

有什么想法吗?这是 .htaccess 还是路由问题?我的.htaccess如下

SourceFiles/.htaccess

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    webroot/    [L]
   RewriteRule    (.*) webroot/$1    [L]
</IfModule>

Webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

更新

作为对 Peshraw 的回应,这里是 config/app.php 文件中我的“App”数组的内容:

'App' => [
    'namespace' => 'App',
    'encoding' => env('APP_ENCODING', 'UTF-8'),
    'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
    'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'),
    'base' => false,
    'dir' => 'src',
    'webroot' => 'webroot',
    'wwwRoot' => WWW_ROOT,
    //'baseUrl' => env('SCRIPT_NAME'),
    'fullBaseUrl' => false,
    'imageBaseUrl' => 'img/',
    'cssBaseUrl' => 'css/',
    'jsBaseUrl' => 'js/',
    'paths' => [
        'plugins' => [ROOT . DS . 'plugins' . DS],
        'templates' => [APP . 'Template' . DS],
        'locales' => [APP . 'Locale' . DS],
    ], 
];

作为回应顶级戴夫

cake 插入图片时生成的 HTML 是:

<img src="/img/nad_home_logo.png" id="nad_top_logo" alt="">

【问题讨论】:

  • 这很有趣。我是一位经验丰富的 cakephp 3 程序员,这绝对可以工作。你的 htaccess 很好。你能告诉我 config/app.php 中以 `App' => [ ` 开头的数组里面的内容吗?你确定你的文件名没有错字吗?字母大小写也可能很重要。
  • “使用 CakePHP 方式时图像加载正常” - 生成的 URL 是什么?
  • 大家好,感谢您的帮助,我添加了一些额外的代码来回答您的问题
  • 嗨@codine,你能分享你的routes.php文件吗?

标签: php html mod-rewrite cakephp cakephp-3.0


【解决方案1】:

@Peshraw H.艾哈迈德

你确定你的文件名没有错字吗?

不...我为图像添加了 png 而不是 jpg。尝试使用 URL 直接加载图像时,CakePHP 告诉我以下内容

错误:找不到 ImgController。错误:创建类 ImgController 在文件下面:src\Controller\ImgController.php

这让我大吃一惊,我认为 cake 没有将图像资源调用路由到 webroot/img 文件夹。我猜它正在扫描那个文件夹,没有找到资源,然后传播看看是否有一个 imgController 知道该怎么做?

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2020-12-01
    • 1970-01-01
    • 2020-10-28
    • 2015-07-20
    相关资源
    最近更新 更多