Yii2 url::返回本地 IP 而不是公共服务器名称

  • 本文关键字:服务器 返回 url IP Yii2 yii2
  • 更新时间 :
  • 英文 :


我有一个使用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

最新更新