使用 php.ini 设置环境

问题描述 投票:0回答:3

我最初在 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
php iis-6 setenv
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 页面上查看结果。变量必须在那里发生!


1
投票
您始终可以使用

Start > Control Panel > System > Environment

 设置真实的环境变量并读取它。不过,这些设置对于计算机上运行的所有软件都是可见的。


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

// Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : '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“开发”也可以放在 .htaccess 中,我认为 .htaccess 具有优先权。

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

可以

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

© www.soinside.com 2019 - 2024. All rights reserved.