2013-08-05 143 views
3

我想开发一个网站。我希望用PHP编写的网站的不同部分将位于不同的文件中。如“posts.php”,“recents.php”等。我试图使用函数“include”来包含目录“/ codes /”中的文件。但它不起作用。PHP包括功能不能正常工作

的事情发生时,如果我在原来的HTML页面的中间放<?php include '/codes/posts.php' ?>(页面保存在PHP格式)。添加行之前的代码部分正在工作,但添加行之后的部分消失了。不知道为什么。我究竟做错了什么?

+2

你缺少报价。 '包括“/codes/posts.php”;' – Bora

+0

检查,如果出口/模具被称为该脚本 –

+0

您可能还需要启用错误报告,因此您可以更容易地看到什么错:http://php.net /manual/en/function.error-reporting.php – n0wak

回答

1

试试这个,你忘了添加一个单引号:

<?php 
// Enable error logging: 
error_reporting(E_ALL^E_NOTICE); 

// Add a single quote: 
include '/codes/posts.php'; 
?> 
+0

抱歉,我在主脚本中添加了代码,忘记在这里添加它们。现在添加它们。 –

+0

你收到什么错误? – Duikboot

+0

没有错误。添加行后的其余代码就消失了。没有错误报告。 –

1

最有可能的,你遇到了一个路径问题的。 /code/posts.php是绝对路径,所以除非在基本目录中有一个名为code的文件夹,否则它找不到该文件。

你需要通过降低第一/code/posts.php)建立一个相对路径,也需要声明的绝对路径的主目录

define("BASEDIR", '/home/username/public_html/'); #typical path on a linux server using cpanel 
include BASEDIR . 'code/posts.php'; 
+0

'通过set_include_path(“/无功/网络/包括/” PATH_SEPARATOR get_include_path());'是一个更好的办法,而且不需要您进行硬编码绝对路径,一次次 –

+0

噢噢噢,我的天堂之前没有看到过,我必须检查一下。它只影响当前的工作脚本? – miah

+0

包含路径在自动加载器被调用时使用,或者当include/require语句不能被解析为当前脚本的相对路径时,只需尝试'echo get_include_path();'以查看PHP使用的路径,通常它包含'/ usr/shared/lib/php:/ usr/lib/php'和其他一些路径......它就像你在.bashrc文件中所做的一样($ echo $ PATH)一个bash外壳显示类似的东西) –

2

固定分号的问题后,也考虑即:

如果路径定义 - 无论是绝对的(从驱动器盘符或\ Windows上,或/在Unix/Linux系统),或相对于当前目录(开始或..) - include_path将被完全忽略。例如,如果文件名以../开头,则解析器将在父目录中查找以查找所请求的文件。

form the PHP docs

所以无论是include './codes/posts.php';include 'codes/posts.php',第一个版本查找文件,相对于当前的工作目录,第二个使用include路径。

PS:最好使用require_onceinclude_once,以避免包括相同的功能/类定义多次,这将casuse问题(重新声明函数)

+0

非常感谢你,它的工作现在! –

+0

@EsperoShoumma:没问题。很高兴我能帮上忙。但是,如果您不介意我的说法,那么SO表示谢谢的方式是通过点击答案旁边的空心V标志(鼠标变成绿色的标志)来赞扬/接受答案 –

+0

@EsperoShoumma:After看着你的个人资料,我注意到你还没有接受一个单一的答案,请[阅读此以了解如何接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-回答工作)。作为奖励,接受答案也会给你+2声望 –