包含一个可用于多个站点的 PHP 文件

包含一个可用于多个站点的 PHP 文件

我有一个我们使用的 Web 服务器,apache、centos5、php

我有一个名为“include.php”的文件,需要将其包含在多个站点中。

例如,我有一个名为 testsite.co.za 的网站,现在我想在 index.php 中包含 include.php 文件,但 include.php 不在 testsite.co.za 的根目录中,

现在我在 Web 根目录中创建了另一个文件夹,其中包含 include.php

我的代码在 testsite.co.za/index.php 中如下所示

require_once '../includes/include.php';  

如果我运行 testsite.co.za,它无法检测到 include.php。我需要更改某个服务器设置才能包含此文件吗?

我的目录结构

-/var/www/html
  -testsite.co.za
      -index.php   
  -includes
      -include.php

希望这是有意义的

答案1

请记住,使用时require '../[something]',您指的是工作目录PHP 的路径,而不是实际脚本的路径。我更喜欢始终使用

require(dirname(__FILE__).'/path');

这样,我知道我需要一个文件相对于 require 语句所在的文件

因此在这种情况下,您的包含内容将是:

require_once( dirname(__FILE__).'/../includes/include.php');

答案2

这个问题很久以前就被问过了,但是对于任何通过谷歌找到它的人来说,正确的答案是确保这个文件在 php.ini 中设置的 PHP include_path 中,或者通过 php.ini 或在运行时通过 set_include_path() php 函数将您的路径添加到 php include_path [http://php.net/manual/en/function.set-include-path.php]

然后可以通过 include('myfile.php') 或 require('myfile.php') 访问您的文件,它们都会搜索 PHP include_path 以及当前目录以查找要包含的文件。

您可能还研究过 php 5.2 或更低版本中的 __autoload() 或 php 5.3 和 5.4 中的 SplAutoloadRegister(),以便创建函数来根据您的需要从文件中自动加载您的类,通过创建该魔术函数或在后一种情况下注册一个自动加载函数。

希望这能够对某些人有所帮助。

答案3

非常有道理。

嗯,据我所知应该work:我一直使用类似的指令。我会检查所有目录权限和所有权以及文件权限,如果这些都没问题,我会检查是否存在恶意 .htaccess 文件或其他可能绊倒您的锁定程序。

如果 Apache 的文档根目录是 /var/www/html,那么您在指向 /var/www/html/includes/ 中的某些内容时应该不会遇到任何问题,除非某些特定指令(或权限问题)阻止它。

相关内容