设置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_ALL
和PHP_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;
}
}
这样我可以改变我怎样将包括在以后的日子。当然,您仍然需要找到一种方法来包含您的包含代码:)
根据主机的设置方式,您可能会被允许将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
为什么人们瞧不起@ Gary的答案吗?在我看来,这是一个糟糕的做法 - 在评论部分没有解释它的情况下,将评论从“无尽的智慧”中撤下。 – amn 2012-09-10 14:53:01
梅。这是你的PHP。我仍然在使用这个系统,并且它非常适合APC性能。如果可以,请使用自动加载器。自动加载器的问题在于,如果你想要在文件系统上有类结构(例如http://www.php.net/manual/en/language),那么你必须要混杂你的类名称。 oop5.autoload.php#49496)。我很乐意听到更好的选择! – 2012-09-11 15:47:32
加里,我只是指出人们如何倾向于在没有评论的情况下倒下东西。就我而言,你的答案是合理的。 – amn 2012-09-12 12:07:37