我有一个使用Yii Framework v2开发的应用程序。
在其中一个页面中,包含图像,但无法正确显示,因为它们的url 包含本地服务器 IP 地址,而不是公共服务器名称。例如,我img
标签上带有像 https://10.0.0.20/path/to/image.jpg 这样的src
。
据我了解(我不是开发这个的人(,URL是使用以下函数设置的,来自后端\模块\新闻\模型\新闻.php:
public function getImageUrl()
{
$path = Yii::getAlias('@uploads/news/') . $this->image;
if (!is_file($path)) {
return '';
} else {
return Url::to(Yii::getAlias('@uploads/news-rel/' . $this->image), true);
}
}
它在文件前端/小部件/新闻/视图/_item.php中调用:
<?php
use kartikhelpersHtml;
use commonhelpersDateHelper;
use yiihelpersStringHelper;
/* @var $this yiiwebView */
/* @var $model backendmodulesnewsmodelsNews */
setlocale(LC_TIME, 'fr_FR.UTF-8');
?>
<div class="news-item-image col-md-3">
<?php if ($model->image): ?>
<?= Html::img($model->getImageUrl()) ?>
<?php endif; ?>
</div>
<div class="news-item-content col-md-9">
<div class="news-item-content-title"><?= $model->title ?></div>
<div class="news-item-content-date">
<?= strftime('%e %B %G', strtotime($model->publishDate)) ?>
</div>
<div class="news-item-content-body"><?= StringHelper::truncateWords(strip_tags($model->body), 20) ?></div>
<?= Html::a(Yii::t('app', 'Read more'), ['/news/view', 'id' => $model->id], ['class' => 'news-item-content-read-more']) ?>
</div>
在其他地方,使用相同的代码,并返回正确的 url (https://www.example.com/path/to/resource(。 我应该注意什么来调试这个?
EDIT1:@uploads别名在后端/配置/引导程序中定义.php如下行:
/*Yii::setAlias('@uploads', realpath(dirname(__FILE__).'/../web') . '/uploads');
Yii::setAlias('uploads/images-rel', '/uploads/images');
Yii::setAlias('uploads/editor-rel', '/uploads/editor');*/
它与许多其他地方使用的别名相同,并返回带有服务器名称的 URL。 谢谢 弗兰克
检查您的config/web.php
文件。
查找主机信息
或者自己设置。它将改变您的网址。
也:
指定$scheme(字符串或 true(时,将返回带有主机信息的绝对 URL(从 yii\web\UrlManager::$hostInfo 获取(。如果 $url 已经是绝对 URL,则其方案将替换为指定的方案。
来源: https://www.yiiframework.com/doc/guide/2.0/en/helper-url