如何在网站的所有其他PHP文件中包含一个PHP文件


How include a PHP file in all other PHP file of a site?

嗨,我必须在我的网站的所有其他PHP文件中包含一个PHP文件。

这是我的网站地图样本:

|index.php
|foolder1
||    file1.php
||    check.php
|foolder2
||    file2.php
|foolder3
||    file3.php

我希望所有的PHP文件都包含check.php,我必须说我不能编辑php.ini,我知道有php_value auto_prepend_file "check.php",但我不知道这个函数是如何运行的,然后我请求帮助使用php_value auto_prepend_file或其他方式将我的文件包含在所有其他PHP文件中?提前谢谢。

编辑:

我知道在StakOverflow中有这样的问题,但我不能编辑php.ini(一些服务器限制…),我只是试着把php_value auto_prepend_file "foolder1/check.php"放在.htaccess中,它为index.php运行,但不为file1.phpfile2.php运行,。。。

更好的方法可能是使用所谓的前端控制器模式。

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    # Explicitly disable rewriting for front controllers
    RewriteRule ^app_dev.php - [L]
    RewriteRule ^app.php - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /app.php [QSA,L]
</IfModule>

您将让web服务器将所有请求传递到app.php,然后引导应用程序,然后将请求传递到相关脚本。

// app.php
//
// Do shared steps like setup the database
switch($_SERVER['REQUEST_URI']) {
  case "foo/bar":
    require "foo/bar.php";
    break;
  case "baz/woo":
    require "baz/woo.php";
    break;
  default:
    require "404.php";
}

这里的主要优点是,您可以从实际的文件结构中抽象URL,并从URL中删除服务器技术,这是一种很好的做法。

我假设您使用的是apache2。

比方说在Ubuntu 14.04 上

编辑

etc/apache2/sites-available/000-default.conf

VirtualHost中添加以下行

php_value auto_prepend_file "/var/www/html/check.php"

重新启动apache服务器我测试了这个及其工作

编辑:我尝试了.htaccess,它也对我有效。

请注意两件事

1) .htaccess已启用如何在Ubuntu 上启用Apache中的.htaccess

2) 提供检查的绝对路径。php

无论如何,两者都对我有效