除了把它放在所有的PHP腳本之前,我如何在每個php腳本之前運行它?在每個php腳本之前執行php腳本?
if ($_SERVER['REMOTE_ADDR'] == '123.123.123.123')
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
我基本上想要把它放在每個腳本的頂部而沒有真正做到這一點。
除了把它放在所有的PHP腳本之前,我如何在每個php腳本之前運行它?在每個php腳本之前執行php腳本?
if ($_SERVER['REMOTE_ADDR'] == '123.123.123.123')
{
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
我基本上想要把它放在每個腳本的頂部而沒有真正做到這一點。
將它放在它自己的文件中,並在php.ini/.htaccess文件中將auto_prepend_file
配置設置爲指向它。
更新:既然你在留言中提到lighttpd的,請注意,您可以在全局INI文件,PHP 5.3將其配置是這樣的:
[PATH=/vhost/domain.com]
auto_prepend_file = /vhost/domain.com/foo.php
[HOST=domain.com]
auto_prepend_file = /vhost/domain.com/foo.php
或者,您可以創建文件/vhost/domain.com/.user.ini
,做同樣的:
auto_prepend_file = /vhost/domain.com/foo.php
相關:http://stackoverflow.com/questions/3792069/how-to-include-a-php-file-site-wide-using-htaccess-or-other-methods/3792076#3792076 – NullUserException 2010-10-01 17:20:26
+1爲lighttpd示例。我試圖爲後代添加「lighthttpd」問題標題 – 2010-10-01 17:33:21
爲此付出:D。也只是試了一下,它的作品非常漂亮。 – Will 2010-10-01 17:51:57
如果您有必要的權利,改變你的PHP配置,auto_prepend_file
正是你要尋找的。
auto_prepend_file
指定在主文件之前自動分析的文件的名稱。包含文件就像使用require()函數調用一樣,因此使用include_path。特殊值
none
禁用自動預先設置。
請注意''HTTP_X_REAL_IP'標頭可以很容易地被客戶僞造,但對於'REMOTE_ADDR'來說並不那麼容易。 – 2010-10-01 17:24:54
您的應用程序沒有單一入口嗎? – halfdan 2010-10-01 17:32:42
這就是爲什麼'如果'在那裏。它檢查的地址是我的代理服務器ip。 – Will 2010-10-01 17:40:06