用php.ini设置SetEnv

时间:2011-06-14 12:21:55

标签: php iis-6 setenv

我最初在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

3 个答案:

答案 0 :(得分:2)

您可以在php.ini文件中设置服务器变量。检查服务器上此文件所在的phpinfo()命令的输出。

查看有关documentationphp.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根目录。然后是单个站点。