修改$ _ENV以外的PHP超全局

bob*_*obo 1 php

在PHP中,我希望能够设置一个变量值"superglobally" - 这是一个我定义的值,可以在服务器的第一行代码上运行的每个脚本都可以访问(即不需要require_once()任何东西或者这样的事情).

目前我通过在我的系统上设置名为varname的环境变量来使用$ _ENV ['varname'].但它需要重新启动才能对Windows系统上的变量值进行更改,这并不好.

有没有其他解决方案缺乏修改PHP源?

Pas*_*TIN 5

如果您使用的是Apache,可以查看一下 mod_env

它允许您SetEnv在Apache的配置中使用该指令(如果配置了Apache服务器,则可以在.htaccess文件中使用这些指令),如下所示:

在我的Apache文件中:

<VirtualHost *>
        ServerName      tests
        DocumentRoot /home/squale/developpement/tests

        ....

        SetEnv MY_TEST_VARIABLE "Hello, World!"

        ....

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

(需要考虑Apache重启)

或者在.htaccess文件中:

SetEnv MY_OTHER_TEST_VARIABLE "This is looking nice !"
Run Code Online (Sandbox Code Playgroud)

(立即考虑到)

然后,这些变量可用于$_SERVER:

var_dump($_SERVER);
Run Code Online (Sandbox Code Playgroud)

给我 :

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)
  ....
  ....
Run Code Online (Sandbox Code Playgroud)

这$_ENV不像你要求的......但差不多;-)
而且这个想法真的是一样的^^