SetEnv与php.ini

问题描述

| 我最初在LAMP服务器上建立了一个网站,但是我的雇主需要将其转移到WISP(Windows / iis / sql服务器/ 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
    

解决方法

        您可以在
php.ini
文件中设置服务器变量。检查此文件在服务器上的“ 7”命令的输出。 查看有关php.ini设置的文档。 要编辑
_SERVER
设置,您必须直接在服务器中进行设置: Apache:与htaccess和
SetEnv
一起使用 IIS:* .php文件或配置中的http://www.php.net/manual/zh/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页面上检查结果。变量必须在那里出现!     ,        您总是可以用
Start > Control Panel > System > Environment
设置一个真实的环境变量并读取该变量。然后,设置对机器上运行的所有软件都是可见的。     ,        在PHP脚本(通常为index.php)中,我使用-
// Define application environment
defined(\'APPLICATION_ENV\') || define(\'APPLICATION_ENV\',(getenv(\'APPLICATION_ENV\') ? getenv(\'APPLICATION_ENV\') : \'production\'));
这将检查可能存储值的位置的层次结构,并在上述三元条件下默认为\'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 \“ development \”也可以放在.htaccess中,并且我认为.htaccess具有优先权。 当我将产品部署到生产服务器时,常量APPLICATION_ENV从具有相同名称的IIS根服务器名称“应用程序设置”获取(此服务器上的所有站点都从根继承,但您可以为其指定本地环境变量)。 可以创建的环境变量似乎是“计算机”->“属性”->“高级系统设置”-“系统变量”。 IIS根目录。然后是单个站点。