2015-09-27 16 views
0

我最近更改了自制框架以将模板文件存储在主题文件夹中而不是常规模板文件夹中。现在的问题是,我已经这样做了,出于某种原因,我的include()指向正确的文件,但不起作用。但是,由于某些原因,主题模板包含()的作品。php包括不为现有文件工作

我收到这些错误:

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

路径明显不正确 – ElefantPhace

+0

使用fullpath'/ something/lib/themes /'代替相对的'lib/themes' –

回答

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()方法也是如此,为此它知道要检查文件是否存在相对的事实当前工作目录,也相对于调用脚本自己的目录

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');当前脚本路径上),或者你需要语句中使用绝对路径或你的基本路径添加到include_path:是路径分隔符)。

+0

那么它为什么会起作用我的主题,为什么它以前工作与唯一的变化是它从数据库中获取主题名称? –

+0

根据您的初始描述,您还将文件移动到不同的目录中,这会打破相对路径! – MrTux