在PHP中,我希望能夠設置一個變量值「superglobally」 - 這是一個我定義的值,可供在第一行服務器上運行的每個腳本訪問的代碼(即不需要require_once()任何或類似的東西)。通過在我的系統上設置環境變量varname。但它需要重新啓動才能更改Windows系統上的變量值,這不太合適。
是否有任何其他解決方案不足以修改php源代碼?
在PHP中,我希望能夠設置一個變量值「superglobally」 - 這是一個我定義的值,可供在第一行服務器上運行的每個腳本訪問的代碼(即不需要require_once()任何或類似的東西)。通過在我的系統上設置環境變量varname。但它需要重新啓動才能更改Windows系統上的變量值,這不太合適。
是否有任何其他解決方案不足以修改php源代碼?
你可以設置你的php.ini
一個值,然後你可以檢索get_cfg_var
。
您可以使用php.ini設置auto_prepend_file
來執行此任務。它允許你指定一個PHP腳本,它在任何'普通'PHP腳本執行之前運行。
引述手冊:
auto_prepend_file string
指定在主文件之前自動解析的文件名。包含文件就像使用require()函數調用一樣,因此使用include_path。
特殊值none禁用自動預先設置。
爲了讓變量的超級全球存在,只是延長其他超級全局的一個,像你這樣$ _ENV,如沒有,
<?php
$_ENV['mystuff'] = "Hello World!";
$_SERVER['FOO'] = "BAR";
?>
乾杯,
如果您正在使用Apache,你可以看看mod_env
它將允許您在Apache的配置(和.htaccess文件中使用SetEnv
指令,如果您的A帕什服務器配置,所以你可以使用這些),就像這樣:
在我的Apache的文件:
<VirtualHost *>
ServerName tests
DocumentRoot /home/squale/developpement/tests
....
SetEnv MY_TEST_VARIABLE "Hello, World!"
....
</VirtualHost>
(需要是一個Apache的重新啓動才能予以考慮)
還是在.htaccess文件:
SetEnv MY_OTHER_TEST_VARIABLE "This is looking nice !"
(立刻考慮)
,然後,這些變量在$_SERVER
可供選擇:
var_dump($_SERVER);
給我:
array
'MY_TEST_VARIABLE' => string 'Hello, World!' (length=13)
'MY_OTHER_TEST_VARIABLE' => string 'This is looking nice !' (length=22)
'HTTP_HOST' => string 'tests' (length=5)
'HTTP_USER_AGENT' => string 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.1) Gecko/20090716 Ubuntu/9.04 (jaunty) Shiretoko/3.5.1' (length=105)
'HTTP_ACCEPT' => string 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' (length=63)
'HTTP_ACCEPT_LANGUAGE' => string 'en-us,en;q=0.5' (length=14)
....
....
這不是$_ENV
喜歡你的要求...但是,幾乎;-)
這個想法是真的一樣^^
小心分享*爲什麼*你這樣做? – hobodave 2009-07-30 18:27:16