2

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

3 回答 3

2

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

查看有关php.ini 设置的文档

要编辑_SERVER设置,您必须直接在服务器中进行设置:

Apache:与 htaccess 和SetEnv
IIS 一起使用: http ://www.php.net/manual/en/function.putenv.php在您的 *.php 文件或配置中:

<serverVariables>
    <set name="db_user" value="abc" />
    <set name="site_key" value="abc" />
</serverVariables>

http://forums.iis.net/t/1171675.aspx

您可以在 phpinfo 页面上查看结果。变量必须出现在那里!

于 2011-06-14T12:25:10.377 回答
1

您始终可以设置一个真实的环境变量Start > Control Panel > System > Environment并读取它。但是,这些设置对机器上运行的所有软件都是可见的。

于 2011-06-14T12:52:30.550 回答
0

在 PHP 脚本(通常是 index.php)中,我使用 -

// Define application environment
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

这将检查可能存储该值的位置的可能层次结构,并在上述三元条件下默认为“生产”。

在本地(运行 Apache)上,它从 ../Apache2/conf/extra/httpd-vhosts.conf 中的 SetEnv APPLICATION_ENV“开发”中获取值

<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 根服务器名称应用程序设置中获取其值(此服务器上的所有站点都从根继承,但您可以为它们提供自己的本地环境变量)。

可以创建的环境变量Computer->Properties->Advanced System Settings-System Variables似乎优先。IIS 根目录。然后是个别网站。

于 2018-06-26T15:12:34.733 回答