题
我可以在中设置 PHP 包含路径 php.ini
:
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 文件。看 PHP 手册 了解详情。
基本上你放了一个名为 .htaccess 在您的网站根目录中,其中包含一些 PHP ini
价值观。如果您将 Apache 配置为允许覆盖,则该站点将使用您的 PHP 配置中的所有值以及您在 .htaccess 文件。
只能与
PHP_INI_ALL
和PHP_INI_PERDIR
类型指令
正如我链接的页面中所述。如果您单击查看完整列表,您会看到包含路径是 PHP_INI_ALL
指示。
其他提示
恕我直言,埃里克·范·布拉克尔给出了最好的答案之一。
此外,如果您使用 Apache 和虚拟主机,您可以直接在其中设置包含内容。使用此方法,您不必记住将 php_admin 命令保留在 .htaccess 中。
用一个 php.ini 网站上的文件 根, ,如果您的设置使用 PHP 作为 计算机图形图像处理 (共享主机上最常见的情况)与服务器范围的语法相同 php.ini;把它放入 .htaccess
如果你有 PHP 作为 Apache 模块(执行 phpinfo()
如果不确定):
php_value include_path "wherever"
请注意,每个文件夹 php.ini does
不影响 子文件夹.
为什么您认为附加到包含路径是不好的做法?
根脚本顶部附近的这段代码应该不会那么糟糕......
$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());
恕我直言,主要优点是它的便携性并且不仅与 Apache 兼容
编辑:我看到了这种方法的一个缺点:性能影响小。看 http://www.geeksengine.com/article/php-include-path.html
根据您的主机的设置方式,您可能会被允许放置一个 php.ini
文件位于主目录的根目录中,并带有额外的配置指令。
您的应用程序应该有一个用 PHP 编写的配置文件。然后将其与相对页面一起包含到程序中的每个页面中。该配置文件将有一个变量用于包含目录、模板目录、图像目录等的路径。
您可以设置 include_path
也在你的 php.ini 文件中。我是一个 Perl 人员,所以我希望能够加载包含内容并拥有 include
做正确的事。我将所有包含内容都放在特定目录中,该目录被添加到 include_path
. 。我可以做类似的事情
require_once "ClassName.php";
我不需要担心文件的相对路径或位置。
我也写过自己的 CustomRequire
做类似的事情
function CustomRequire ($file) {
if(defined('MYINCLUDEPATH')) {
require_once MYINCLUDEPATH . "/$file";
} else {
require_once $file;
}
}
这样我就可以在以后改变我的做法。当然,您仍然需要找到一种方法来包含您的包含代码:)