2014-02-22 34 views
0

我有一个网站,需要在我拥有的所有其他网页上的某个页面。我的问题是我不能使用require需要该网页,因为链接的URL会改变,以此塞纳里奥为例: 的header.php:allow_url_fopen和allow_url_include与PHP需要链接

<?php 
    require('include/database.php'); 
?> 

然后,我有一个文件位于文件夹:树林/tree.php

如果我想从我的索引文件连接到数据库,没有问题,但如果我想从tree.php连接到它,那么URL将不会是正确的标题。 PHP了。这给我一个问题。我尝试用完整的URL解决这个:

<?php 
    require('http//www.example.com/include/database.php'); 
?> 

我的问题是,现在我可以这样做,因为与allow_url_fopen选项和allow_url_include安全问题。我将需要找到另一种链接到该页面的方式,因为我不想启用任何php.ini设置,因为它不安全。

有没有另一种方法让我需要数据库,以便所有文件夹中的所有文件都可以访问它?提前致谢。

+1

这对allow_url_include也不起作用。服务器将处理PHP,并且只包含所包含文件的HTMK输出。 –

+0

哦,谢谢你的信息! – user3287771

回答

1

尝试使用像一个绝对路径:

require $_SERVER['DOCUMENT_ROOT'] . '/include/database.php'; 
+0

是的,工作,谢谢!你知道它是否总是最好使用'require $ _SERVER ['DOCUMENT_ROOT']'而不是写实际的根? – user3287771

+1

如果将Web应用程序移动到不同的主机,那么这样做更可取,在这种情况下,不必更改根路径。 – ProfessorT

0

你看到一个问题,是没有的。如果我正确理解了你,你有这个例子的布局。

| 
|-header.php 
|-include/ 
| `-database.php 
`woods/ 
    `-tree.php 

的header.php:

include("include/database.php"); 

tree.php:

include("../header.php"); 

这将工作,因为包括始终使用从其所包含的文件的路径。所以tree.php将包括../header.php其中包括include/database.php。这将很好地工作。