我最初在 LAMP 服务器上建立了一个网站,但我的雇主需要将其转移到 WISP(windows/iis/sql server/php ..我不认为这是一个真正的术语?)服务器,我已经这样做了。 我使用的是 IIS v 6,并且我了解到没有可以设置
SetEnv
变量的 _SERVER
等效项。 我依赖这些变量进行某些配置,例如数据库用户/密码和用于散列的站点密钥。 出于安全原因,我强烈希望将这些内容保留在 php 代码之外。
我能想到的唯一解决方案是使用 php.ini 设置此类变量。 我相信您可以设置默认的数据库连接,但我不想这样做。 php.ini 有
SetEnv
等效项吗?
如果没有,这是否可以通过 IIS 来实现?
例如,我希望能够使用自定义
_SERVER[db_user]
或 _SERVER[site_key]
。 在我当前的 .htaccess 中,我有
SetEnv db_user tandu
SetEnv site_key blocked_for_your_protection
您在
php.ini
文件中设置服务器变量。检查 phpinfo()
命令的输出,其中该文件位于您的服务器上。
查看有关 php.ini 设置的 文档。
要编辑_SERVER
设置,您必须直接在服务器中进行设置:
Apache: 可与 htaccess 和 SetEnv
<serverVariables>
<set name="db_user" value="abc" />
<set name="site_key" value="abc" />
</serverVariables>
参见 http://forums.iis.net/t/1171675.aspx
您可以在 phpinfo 页面上查看结果。变量必须在那里发生!
Start > Control Panel > System > Environment
设置真实的环境变量并读取它。不过,这些设置对于计算机上运行的所有软件都是可见的。
// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
这会检查可能存储值的位置的可能层次结构,并在上述三元条件下默认为“生产”。
在本地(运行 Apache)上,它从 SetEnv APPLICATION_ENV“development”获取值 在../Apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName foo.local
DocumentRoot "C:\wwwroot\foo"
<Directory "C:\wwwroot\foo">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SetEnv APPLICATION_ENV "development"
ErrorLog "logs/foo.local-error.log"
CustomLog "logs/foo.local-access.log" common
</VirtualHost>
SetEnv APPLICATION_ENV“开发”也可以放在 .htaccess 中,我认为 .htaccess 具有优先权。
当我部署到生产服务器时,常量 APPLICATION_ENV 从 IIS 根服务器名称应用程序设置中获取其值(该服务器上的所有站点都继承自根服务器,但您可以为它们提供自己的本地环境变量)。
可以
创建的环境变量计算机->属性->高级系统设置-系统变量似乎优先。 IIS 根目录。然后是个别网站。