我最初在LAMP服务器上建立了一个网站,但我的雇主需要将它移到WISP(windows / iis / sql server / php ..我不认为这是一个真正的术语?)服务器,我完成了。我正在使用IIS v 6,并且我读到没有SetEnv
等效项,您可以设置_SERVER
个变量。我依赖这些变量进行某些配置,例如DB用户/密码和用于散列的站点密钥。出于安全原因,我非常希望将这些内容保留在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
答案 0 :(得分:2)
您可以在php.ini
文件中设置服务器变量。检查服务器上此文件所在的phpinfo()
命令的输出。
查看有关documentation的php.ini settings。
要编辑_SERVER
设置,您必须直接在服务器中设置这些设置:
Apache:适用于htaccess和SetEnv
您的* .php文件或配置中的 IIS: http://www.php.net/manual/en/function.putenv.php:
<serverVariables>
<set name="db_user" value="abc" />
<set name="site_key" value="abc" />
</serverVariables>
请参阅http://forums.iis.net/t/1171675.aspx
您可以在phpinfo页面上查看结果。变量必须在那里出现!
答案 1 :(得分:1)
您始终可以使用Start > Control Panel > System > Environment
设置实际环境变量并阅读。然后,设备对机器上运行的所有软件都可见。
答案 2 :(得分:0)
在PHP脚本(通常为index.php)中,我使用-
// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
这将检查可能存储值的位置的层次结构,并在上述三元条件下默认为“生产”。
在本地(运行Apache)上,它从SetEnv APPLICATION_ENV“开发”中获取值 在../ 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根服务器名称“应用程序设置”获取(此服务器上的所有站点都从根继承,但是您可以为其指定本地环境变量)。 / p>
可以创建 的环境变量Computer-> Properties-> Advanced System Settings-System Variables似乎具有优先权。 IIS根目录。然后是单个站点。