我最近更改了自制框架,将模板文件存储在主题文件夹中,而不是通用模板文件夹中。问题是我已经这样做了,由于某种原因我的include()指向正确的文件,但不起作用。但是,由于某种原因,主题模板include()起作用。
我收到这些错误:
Warning: require(lib/themes/original/templates/en/home/index.php): failed to open stream: No such file or directory in /home/stretch045/public_html/lib/theme/original/templateen.php on line 27
Warning: require(lib/themes/original/templates/en/home/index.php): failed to open stream: No such file or directory in /home/stretch045/public_html/lib/theme/original/templateen.php on line 27
Fatal error: require(): Failed opening required 'lib/themes/original/templates/en/home/index.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/stretch045/public_html/lib/theme/original/templateen.php on line 27
我相信最后一个可能会解释它,但我不明白括号中的内容应该是什么意思,因为它不是我在共享服务器上的路径。
如果有必要,我会提供代码,但由于路径正确,我不知道这可能是什么问题。
答案 0 :(得分:1)
我认为问题在于您尝试将themes
文件夹中的文件包含在theme
中,至少是我从错误中理解的内容:
Warning: require(lib/themes/original/templates/en/home/index.php): failed to open stream: No such file or directory in /home/stretch045/public_html/lib/theme/original/templateen.php on line 27
这里显然是文件' / home / stretch045 / public_html / lib / 主题 /original/templateen.php'尝试包含文件' lib / 主题 /original/templates/en/home/index.php'。
如果您的框架的入口点为/home/stretch045/public_html/index.php
,那么您使用相对路径这一事实不应该成为问题,因为include()的文档适用于require()
方法因此,它知道检查文件是否相对于当前工作目录存在,也相对于调用脚本自己的目录
答案 1 :(得分:0)
它不起作用,因为找不到该文件。
您在require语句中使用了相对路径。如果包含的文件包含使用相对路径的其他文件(因为PHP使用相对于正在执行的脚本的路径而不是包含include / require语句的文件),这尤其成问题。
PHP尝试使用include_path
找到相对引用的文件,即.
相对于执行的文件以及/ usr / lib / php和/ usr / local / lib / php (即/usr/lib/php/lib/themes/original/templates/en/home/index.php和/usr/local/lib/php/lib/themes/original/templates/en/home/index.php )。这些都不存在。
因此,使用正确的相对路径(例如,始终使用require(__DIR__.'/PATH');
始终基于当前脚本路径)或在require语句中使用绝对路径或将基路径添加到include_path
({{ 1}}是路径分隔符。)