我可以在php.ini
:
include_path = /path/to/site/includes/
但其他网站受到影响,这是不好的。
我可以在每个文件的开头设置PHP include:
$path = '/path/to/site/includes/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
但这似乎是不好的做法,并使事情变得混乱。
所以我可以将其包含在内,然后将其包含在每个文件中:
include 'includes/config.php';
或
include '../includes/config.php';
这就是我现在正在做的事情,但config.php
的包含路径会根据包含的内容而改变。
有更好的方法吗?这有关系吗?
答案 0 :(得分:16)
如果您使用apache作为网络服务器,则可以使用 .htaccess 文件覆盖(如果允许)设置。有关详细信息,请参阅the PHP manual。
基本上,您在网站根目录中放置了一个名为 .htaccess 的文件,其中包含一些PHP ini
值。如果您将Apache配置为允许覆盖,则此站点将使用PHP配置中的所有值,+您在 .htaccess 文件中指定的值。
只能与
PHP_INI_ALL
和PHP_INI_PERDIR
类型指令一起使用
如我链接的页面中所述。如果单击查看完整列表,则会看到包含路径是PHP_INI_ALL
指令。
答案 1 :(得分:7)
更多,如果您正在使用Apache&虚拟主机,您可以直接在其中设置。使用此方法,您不必记住在.htaccess中保留php_admin命令。
答案 2 :(得分:4)
如果您的设置使用 PHP 作为 CGI ,则在网站 root 中使用 php.ini 文件(共享主机上最常见的情况),其语法与服务器范围 php.ini 相同;如果您将PHP作为Apache模块,请将其放入.htaccess
(如果不确定,请执行phpinfo()
):
php_value include_path "wherever"
请注意,每个文件夹php.ini does
不会影响子文件夹。
答案 3 :(得分:3)
为什么你认为追加包含路径是不好的做法?
接近根脚本顶部的代码不应该那么糟糕......
$path = '/path/to/site/includes/';
set_include_path($path . PATH_SEPARATOR . get_include_path());
恕我直言,其主要优势在于它的便携性和兼容性不仅适用于Apache
编辑:我看到了这种方法的缺点:性能影响小。见http://www.geeksengine.com/article/php-include-path.html答案 4 :(得分:1)
根据主机的设置方式,可能会允许您使用额外的配置指令在主目录的根目录中放置php.ini
文件。
答案 5 :(得分:1)
您的应用程序应该有一个用PHP编写的配置文件。然后将相关页面包含在程序的每个页面中。该配置文件将包含一个变量,用于包含目录,模板目录,图像目录等的路径。
答案 6 :(得分:0)
您也可以在php.ini文件中设置include_path
。我是一个perl人,所以我希望能够加载包含并让include
做正确的事情。我将所有包含在特定目录中,并添加到include_path
。我可以做像
require_once "ClassName.php";
我不需要担心文件的相对路径或位置。
我也写了自己的CustomRequire
来做像
function CustomRequire ($file) {
if(defined('MYINCLUDEPATH')) {
require_once MYINCLUDEPATH . "/$file";
} else {
require_once $file;
}
}
这样我就可以改变以后的做法。当然,您仍然需要找到一种方法来包含您的包含代码:)