设置PHP包含每个站点的路径?

问题描述:

我可以设置PHP包括在php.ini路径:设置PHP包含每个站点的路径?

include_path = /path/to/site/includes/ 

但随后其他网站受到影响,这样是不行的。

我可以设置PHP包括在每一个文件的开头:

$path = '/path/to/site/includes/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 

但是,这似乎是不好的做法和杂波的事情了。

所以我可以做的包括的是,然后包含到每一个文件:

include 'includes/config.php'; 

include '../includes/config.php'; 

这是我现在在做,但包含的路径config.php将根据包含它的内容而改变。

有没有更好的方法?有关系吗?

如果您使用apache作为网络服务器,您可以使用.htaccess文件覆盖(如果允许)设置。详情请参阅the PHP manual

基本上你把一个名为.htaccess的文件放在你的网站根目录下,其中包含一些PHP ini值。如果您配置了Apache以允许覆盖,则该站点将使用您的PHP配置中的所有值,+您在.htaccess文件中指定的值。

只能用PHP_INI_ALLPHP_INI_PERDIR类型的指令

在我的链接页面声明中使用。如果点击完整列表,则会看到包含路径是PHP_INI_ALL指令。

你也可以在你的php.ini文件中设置include_path。我是一个perl的家伙,所以我期望能够加载包括并有正确的事情。我已将所有包含在特定目录中,并将其添加到include_path。我可以做类似

require_once "ClassName.php"; 

我不需要担心文件的相对路径或位置。

我也写我自己的CustomRequire做事喜欢

function CustomRequire ($file) { 
    if(defined('MYINCLUDEPATH')) { 
     require_once MYINCLUDEPATH . "/$file"; 
    } else { 
     require_once $file; 
    } 
} 

这样我可以改变我怎样将包括在以后的日子。当然,您仍然需要找到一种方法来包含您的包含代码:)

+0

为什么人们瞧不起@ Gary的答案吗?在我看来,这是一个糟糕的做法 - 在评论部分没有解释它的情况下,将评论从“无尽的智慧”中撤下。 – amn 2012-09-10 14:53:01

+0

梅。这是你的PHP。我仍然在使用这个系统,并且它非常适合APC性能。如果可以,请使用自动加载器。自动加载器的问题在于,如果你想要在文件系统上有类结构(例如http://www.php.net/manual/en/language),那么你必须要混杂你的类名称。 oop5.autoload.php#49496)。我很乐意听到更好的选择! – 2012-09-11 15:47:32

+0

加里,我只是指出人们如何倾向于在没有评论的情况下倒下东西。就我而言,你的答案是合理的。 – amn 2012-09-12 12:07:37

根据主机的设置方式,您可能会被允许将php.ini文件放置在您的主目录的根目录中,并带有额外的配置指令。

埃里克范布拉克尔,恕我直言,最好的答案之一。,

更多,如果你使用Apache &虚拟主机,你可以设置直接包括在其中。使用这种方法,你不必记住在你的.htaccess中留下php_admin命令。

如果你的安装使用PHP作为CGI(共享主机中最常见的情况)与相同的语法服务器范围的php.ini使用在网站根目录的php.ini文件;放入的.htaccess如果你有PHP作为Apache模块(做的phpinfo()如果不确定):

php_value include_path中“何”

注意,每个文件夹的php.ini不影响子文件夹。

您的应用程序应该有PHP编写的配置文件。然后在程序的每个页面中加入相关页面。那配置文件将有到包括目录,模板目录,图片目录的路径的变量等

为什么你认为追加到包括路径是不好的做法?

根附近脚本的顶部这段代码不应该是坏...

$path = '/path/to/site/includes/'; 
set_include_path($path . PATH_SEPARATOR . get_include_path()); 

恕我直言,主要优点是它的便携和兼容,不仅与Apache

编辑:我看到了一个这种方法的缺点:性能影响小。看到http://www.geeksengine.com/article/php-include-path.html