【问题标题】:PHP Environment Variable from PHP ScriptPHP 脚本中的 PHP 环境变量
【发布时间】:2019-12-12 13:59:04
【问题描述】:

环境变量用于设置PHP应用程序,应用程序运行流畅。 我面临的问题是当我尝试引用应用程序的数据库连接文件并从 CLI 运行它时。

Apache 设置:

<VirtualHost *:80>
 DocumentRoot /var/www/html
 ServerName server.hostname.com
 SetEnv HOSTNAME 'hostname'
 SetEnv USERNAME 'username'
 SetEnv DB_PASSWORD 'password'
 SetEnv DB_NAME 'databaseName'
</VirtualHost>

环境变量存储所有与连接相关的数据,并且连接正在引用它。

连接:

<?php

$username = $_SERVER['USERNAME'];
$password = $_SERVER['DB_PASSWORD'];
$hostname = $_SERVER['HOSTNAME'];
$database = $_SERVER['DB_NAME'];
error_reporting(0);
$mysqli = new mysqli($hostname, $username, $password, $database);

但是,当我从 CLI 运行它时,它不会获取环境变量,并且由于同样的原因,它也不允许我运行在服务器上设置的 cronjobs。

【问题讨论】:

    标签: php apache command-line scripting


    【解决方案1】:

    当您通过CLI 运行PHP 脚本时,它与apache 无关,因此您将无法访问您的变量。

    还有其他选择:

    1. PHP 脚本中设置它们并在您的脚本中使用include('/path/to/variables.php');
    2. 在系统上全局设置它们(可能很危险)
    3. 将它们作为命令行选项传递:php myscript.php var1 var2,然后使用$argv[1], $argv[2] 访问它们
    4. 在调用脚本之前在命令行上设置变量:APPLICATION_ENV=staging php myscript.php 该变量将在 $_SERVER 数组中可用:$_SERVER['APPLICATION_ENV']。在您的脚本完成执行后,这将在环境中持续存在,您可能不希望这样做。

    这真的取决于您的需求。我个人认为第一个选项是最简单的。

    在此处了解更多信息:Setting PHP enviromental variable while running command line script

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 2018-07-11
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2015-06-08
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多