【问题标题】:SetEnv with php.iniSetEnv 与 php.ini
【发布时间】:2011-06-14 12:21:55
【问题描述】:

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

【问题讨论】:

  • SetEnv 语法仅适用于 Apache。

标签: php iis-6 setenv


【解决方案1】:

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

查看documentation 关于php.ini settings

要编辑_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 页面上查看您的结果。变量必须出现在那里!

【讨论】:

  • 太棒了。 如何php.ini 文件中设置服务器变量?
  • 我的意思是客户服务器变量,例如 _SERVER[db_user]_SERVER[site_key]
  • 请将这些变量添加到您上面的问题中!
  • 谢谢,这看起来像我需要的。我更愿意将它放在服务器配置中,而不是在代码中使用 putenv(),即使代码不在 web 根目录下。
  • 如果您有最终解决方案,请在此处发布。
【解决方案2】:

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

【讨论】:

  • 这似乎是优先的主值。其次是 IIS 服务器(应用程序设置环境变量 [local]),它可以被每个站点继承或被每个站点自己的本地环境变量覆盖。我相信最后一个存储在 web.config 中。
【解决方案3】:

在我使用的 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 "development" 也可以放在 .htaccess 中,我假设 .htaccess 优先。

当我部署到生产服务器时,常量 APPLICATION_ENV 从同名的 IIS 根服务器名称应用程序设置中获取其值(此服务器上的所有站点都从根目录继承,但您可以为它们提供自己的本地环境变量)。

可以创建的环境变量计算机->属性->高级系统设置-系统变量似乎优先。 IIS 根目录。然后是个别网站。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2011-12-01
    • 2011-10-16
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多