我有一个我们使用的 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/ 中的某些内容时应该不会遇到任何问题,除非某些特定指令(或权限问题)阻止它。