Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本中的PHP环境变量_Php_Apache_Command Line_Scripting - Fatal编程技术网

PHP脚本中的PHP环境变量

PHP脚本中的PHP环境变量,php,apache,command-line,scripting,Php,Apache,Command Line,Scripting,环境变量用于设置PHP应用程序,应用程序运行平稳。 我面临的问题是,当我试图引用应用程序的数据库连接文件并从CLI运行它时 Apache设置: <VirtualHost *:80> DocumentRoot /var/www/html ServerName server.hostname.com SetEnv HOSTNAME 'hostname' SetEnv USERNAME 'username' SetEnv DB_PASSWORD 'password' SetEn

环境变量用于设置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>

DocumentRoot/var/www/html
ServerName server.hostname.com
SetEnv主机名“HOSTNAME”
SetEnv用户名“USERNAME”
SetEnv DB_密码“PASSWORD”
SetEnv DB_名称“databaseName”
环境变量存储所有与连接相关的数据,并且连接正在引用这些数据

连接:

<?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
运行
PHP
脚本时,它与
apache
无关,因此您将无法访问变量

还有其他选择:

  • PHP
    脚本中设置它们,并使用
    include('/path/to/variables.PHP')在脚本中
  • 在系统上全局设置它们(可能很危险)
  • 将它们作为命令行选项传递:
    php myscript.php var1 var2
    ,然后使用
    $argv[1]、$argv[2]
  • 在调用脚本之前在命令行上设置变量:
    APPLICATION\u ENV=staging php myscript.php
    该变量将在$\u服务器数组中可用:
    $\u服务器['APPLICATION\u ENV']
    。这将在脚本完成执行后保留在环境中,您可能不希望这样做
  • 这取决于你的需要。我个人认为第一种选择是最简单的

    请在此处阅读更多信息: