如何从其他.ini文件中获取值

时间:2015-04-20 23:10:57

标签: php

我有这个ini文件:/etc/php5/apache2/conf.d/appconfig.ini

以下是文件的内容:

serverhost = localhost

我重置了apache2服务器。如何在不指定ini文件路径的情况下从PHP脚本获取此值?我假设当PHP解析这个文件时,它会将serverhost的值存储在某个可访问的地方。我知道这个文件已被解析,因为我运行了php --ini

我试过这个剧本:

<?php
echo ini_get("serverhost");
?>

但没有回复。我可以这样说:

<?php
$file = parse_ini_file("/etc/php5/apache2/conf.d/appconfig.ini");
echo $file["serverhost"];
?>

但我想知道如何将它作为排序的环境变量。 PHP确实解析了文件吗?

毕竟,我将在appconfig.ini中存储密码。我想知道存储密码的最佳做法是什么。

1 个答案:

答案 0 :(得分:0)

要保护邮件服务器或SQL Server的连接设置,可以将它们存储在wwwroot文件夹之外的文件中。例如,如果您的站点位于/var/sites/mysite/www的服务器上,则会将该文件放在/var/sites/mysite/_conf之类的目录中。例如,在/var/sites/mysite/_conf/appconfig.inc.php创建一个文件:

<?php
$smtpServerHost = 'localhost';
$smtpServerUser = 'user@example.com';
$smtpServerPass = 'Password1';
?>

然后,当您在应用程序中包含该文件时,您只需调用这些变量即可。例如,如果您有formhandler.php

<?php

include_once '../_conf/appconfig.inc.php';
include_ once 'Mail.php';

$smtp = Mail::factory('smtp', array (
  'host' => $smtpServerHost,
  'auth' => true,
  'username' => $smtpServerUser,
  'password' => $smtpServerPassword)
);

$headers['From']    = 'richard@example.com';
$headers['To']      = 'joe@example.com';
$headers['Subject'] = 'Test message';

$mail = $smtp->send($to, $headers, print_r($_POST));

?>