【问题标题】:ViewNotFoundException on Shared Hosting Cpanel + Yii2共享主机 Cpanel + Yii2 上的 ViewNotFoundException
【发布时间】:2017-07-09 08:43:24
【问题描述】:
  1. 我已经创建了一个在我的 Windows localhost 机器上完美运行的 yii2 项目。

  2. 我在 windows 机器上使用 XAMPP 来处理 Yii2 应用程序。

  3. 但是由于我已经在 Cpanel Linux 共享主机上成功部署了应用程序,我无法打开我网站上的页面。

  4. 以下是共享主机后端/网络日志的错误;

    [error][yii\base\ViewNotFoundException] exception 'yii\base\ViewNotFoundException' with message 
    
    'The view file does not exist: /home/xyz/public_html/nse/backend/views/site/student\student_list.php' 
    in /home/xyz/public_html/nse/vendor/yiisoft/yii2/base/View.php:229
    

同样的东西在我的本地机器上运行良好。 有什么帮助吗?

【问题讨论】:

  • 你的本地机器是WINdows,服务器是Linux吗?
  • 是的,先生。没错。

标签: yii2 yii2-advanced-app


【解决方案1】:

这看起来像是一个区分大小写的问题。

检查所有名称和相应文件是否以相同方式保存,即student_list.php 中的视图应称为->render('student_list') 而不是->render('Student_list')。

文件夹名和类名也一样。

更新
该错误表明您使用反斜杠而不是斜杠调用视图,因此您应该更正它。

虽然在 Windows 上的路径中使用它们没有太大区别,但您应该在 Linux 上正确使用它。

来自quora.com的快速解释:

这就是两个斜线的用法:

正斜杠/

  • / 用于 UNIX(以及 Linux 和 OS X)的文件系统。
  • / 是几乎所有编程语言中“除法”的标准符号。
  • / 也在 URL 中用作分隔符。

反斜杠\

  • \用于DOS和Windows的文件系统。
  • \ 用作转义序列(\n、\t 等)
  • \ 在 UNIX 文件系统中用于向终端指示目录路径中的空格。 (同时也遵循用双引号将绝对文本括起来)。

至于他们的历史,维基百科是你的朋友

斜线可以追溯到古罗马时代。在近代早期,在中世纪欧洲广泛使用的 Fraktur 文字中,一个斜线 (/) 代表一个逗号,而两个斜线 (//) 代表一个破折号。两个斜线最终演变为类似于等号(=)的符号,然后进一步简化为单个破折号(-)

不过,反斜杠的起源是最近才出现的

作为字符频率研究的结果,Bob Bemer 于 1961 年 9 月 18 日将“\”字符引入 ASCII。特别是引入了 \,以便 ALGOL 布尔运算符 ∧ (AND) 和 ∨ (OR) 可以在 ASCII 中分别组合为“/\”和“/”。这两个运算符都包含在 Unix V6、Unix V7 和当前 BSD 2.11 提供的 C 编程语言的早期版本中。

欲了解更多信息,请参阅this article。

【讨论】:

  • 感谢您的回复,正如我所提到的,我已确保本地计算机和共享托管 linux 服务器上的文件结构和命名约定相同。我所做的就是在本地机器上压缩我的项目并将其提取到我的服务器上,就是这样。相同的螺柱适用于 Windows 本地机器。
  • 你是不是像这样调用视图student\student_list?
  • 我不确定出了什么问题。该错误建议您将其称为student\student_list,但您说您使用student/student_list(带有适当的斜杠)。
  • 非常感谢您抽出宝贵的时间。是的,你最初是对的,正如我在问题中看到的那样,后来直到你做出回应,我做了一些打击和试验方法,瞧!我尝试调用“return \Yii::$app->controller->render('student/student_list', [....]); ”而不是“ return $this->render('student\student_list', [ ..]); “, 有效。如果您能帮助我解释上述两个电话之间的区别,我绝对可以给您投票和评分。
  • 您在回答中说这是区分大小写的问题,我同意!但我没有得到关于使用 $this_render() 的页面,而是得到关于 \Yii::$app->controller->render() 的页面。
猜你喜欢
  • 2020-01-16
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 2020-08-02
  • 1970-01-01
相关资源
最近更新 更多