Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何自动包含?_Php - Fatal编程技术网

PHP如何自动包含?

PHP如何自动包含?,php,Php,我有以下项目结构: \ |- FolderA | |- FolderB | | |- index.php | |- index.php |- index.php |- config.php 每当我访问以下内容时,我希望自动加载我的config.php(index.php中没有“include”指令): http:://MySiteName/index.php http:://MySiteName/FolderA/index.php http:://MySiteName/FolderA/

我有以下项目结构:

\
|- FolderA
|  |- FolderB
|  |  |- index.php
|  |- index.php
|- index.php
|- config.php
每当我访问以下内容时,我希望自动加载我的config.php(index.php中没有“include”指令):

http:://MySiteName/index.php
http:://MySiteName/FolderA/index.php
http:://MySiteName/FolderA/FolderB/index.php
或者我的项目中的任何其他php文件


如何实现这一点?

如果您可以动态更改PHP配置(通过
.htaccess
或本地
PHP.ini
)来限制对应用程序的更改,您可以尝试使用该指令。

如果您可以动态更改PHP配置(通过
.htaccess
或本地
PHP.ini
)要限制对应用程序的更改,可以尝试使用该指令。

唯一可行的方法是使用php.ini指令:

auto_prepend_file = /path/to/config.php
或在.htaccess中:


唯一可行的方法是使用php.ini指令:

auto_prepend_file = /path/to/config.php
或在.htaccess中:


如果您正在运行Apache web服务器,请将以下内容放在根web目录的
.htaccess
文件中:

php_value auto_prepend_file "/absolute/location/of/config.php"

如果您正在运行Apache web服务器,请将以下内容放在根web目录的
.htaccess
文件中:

php_value auto_prepend_file "/absolute/location/of/config.php"

我能想到的最好的答案(除了可能会给您带来麻烦的
自动预处理文件
)是使用
.htaccess
文件实际加载到加载实际文件的特定启动文件中。 示例如下:

\
|- FolderA
|  |- index.php
|- index.php
|- config.php
|- boot.php
|- .htaccess
boot.php的内容

<?php
    include_once('config.php');
    $real_file = $_SERVER['REDIRECT_URL'];
    include_once($real_file);
?>
因此,基本上,我们告诉它所有以
index.php
结尾的请求都应该发送到
boot.php

这个
boot.php
只需加载您的配置,然后加载原始的
index.php
文件,不管它在哪个子文件夹中。重写规则仅针对
index.php
文件进行了调整,以便图像(和其他文件)正常工作。如果您有其他文件,如
index2.php
,只需相应地修改htaccess正则表达式。

我能想到的最佳答案(除了可能会给您带来麻烦的
自动预结束文件
之外)是使用
.htaccess
文件实际加载到加载实际文件的特定启动文件中。 示例如下:

\
|- FolderA
|  |- index.php
|- index.php
|- config.php
|- boot.php
|- .htaccess
boot.php的内容

<?php
    include_once('config.php');
    $real_file = $_SERVER['REDIRECT_URL'];
    include_once($real_file);
?>
因此,基本上,我们告诉它所有以
index.php
结尾的请求都应该发送到
boot.php


这个
boot.php
只需加载您的配置,然后加载原始的
index.php
文件,不管它在哪个子文件夹中。重写规则仅针对
index.php
文件进行了调整,以便图像(和其他文件)正常工作。如果您有其他文件,比如
index2.php
,只需相应地修改htaccess正则表达式。

我知道没有办法this@Gazler-我认为这在现实中是不可能的,除非他在每个
index.php
中编写这样的自动加载代码,哪种方法会破坏不使用
include
@Lu4的目的?我通常不会质疑OP的目的,但这次很奇怪。请看下面我的回答……请重新表述“我通常不会质疑OP的目的,但这次很奇怪”的疯狂想法,但冒犯那些试图帮助你的人通常不是一个很好的长期方法。我知道这是没有办法的this@Gazler-我认为这在现实中是不可能的,除非他在每个
index.php
中都写了这样的自动加载代码,否则这会破坏不使用
include
@Lu4的目的-我通常不会质疑OP的目的,但这次很奇怪。请看下面我的答案……请重新表述“我通常不会质疑OP的目的,但这次它很奇怪”的疯狂想法,但冒犯试图帮助您的人通常不是一个好的长期方法。如果我使用名称空间,不带名称空间的php代码可能会导致错误?@Lu4我不知道你的意思。任何非命名空间的代码都会放入。如果您使用的是命名空间,则不能在命名空间之外使用代码,如果配置文件(没有命名空间)将被前置到index.php文件,则index.php(有命名空间)将混合使用非命名空间和命名空间代码,这可能会导致错误…@Lu4使用
auto\u prepend\u file
包含的任何文件都会以与
require
相同的方式合并(如果阅读手册页面,您会知道这一点)。这并不是魔术般地为实际剧本做准备谢谢你的回答菲尔·布朗,这真的很有帮助。我正在考虑使用你的解决方案。但如果你能更宽容地对待与你交流的人,那就太好了。我认为你的“如果你阅读手册页面,你就会知道这一点”是一种冒犯……如果我使用名称空间,在没有名称空间的php代码前面加上前缀可能会导致错误呢?@Lu4我不知道你的意思。任何非命名空间的代码都会放入。如果您使用的是命名空间,则不能在命名空间之外使用代码,如果配置文件(没有命名空间)将被前置到index.php文件,则index.php(有命名空间)将混合使用非命名空间和命名空间代码,这可能会导致错误…@Lu4使用
auto\u prepend\u file
包含的任何文件都会以与
require
相同的方式合并(如果阅读手册页面,您会知道这一点)。这并不是魔术般地为实际剧本做准备谢谢你的回答菲尔·布朗,这真的很有帮助。我正在考虑使用你的解决方案。但如果你能更宽容地对待与你交流的人,那就太好了。我认为你的“如果你阅读手册页面,你就会知道这一点”是一种冒犯…自动预处理文件可能会导致什么问题?主机服务器可能不允许你设置它,它可以从htaccess、ini等禁用。。。哦,对于未来的开发人员来说,这可能不是那么明显。如果
mod_rewrite
不可用,这将非常糟糕。它总是可用:)。廉价主机也开始允许它。在这种廉价/共享主机上设置INI设置总是失败