php - PHP 脚本中的 PHP 环境变量
问题描述
环境变量用于设置 PHP 应用程序和应用程序运行顺利。我面临的问题是当我尝试引用应用程序的数据库连接文件并从 CLI 运行它时。
阿帕奇设置:
<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
脚本时CLI
,它与 无关apache
,因此您将无法访问您的变量。
还有其他选择:
- 将它们设置在
PHP
脚本中并include('/path/to/variables.php');
在您的脚本中使用。 - 在系统上全局设置它们(可能很危险)
- 将它们作为命令行选项传递:
php myscript.php var1 var2
然后您使用$argv[1], $argv[2]
- 在调用脚本之前在命令行上设置变量:
APPLICATION_ENV=staging php myscript.php
该变量将在 $_SERVER 数组中可用:$_SERVER['APPLICATION_ENV']
。在您的脚本完成执行后,这将在环境中持续存在,您可能不希望这样做。
这真的取决于你的需求。我个人认为第一个选项是最简单的。
在此处阅读更多信息:在运行命令行脚本时设置 PHP 环境变量
推荐阅读
- python - 如何在反应 js 应用程序中使用 npm python-shell?
- c++ - GNUMakefile 和 gcc:解决冲突“-std=c++”要求的顺序
- .htaccess - 通过.htaccess 重定向除某些特定流量之外的所有流量..?
- c# - 获取文本文件中第一个字符的计数?
- python - 在 python 中使用 pandas 时如何修复“属性错误”
- javascript - 如何在点击时动态添加到 DOM?
- javascript - Django 应用程序不与 JavaScript 代码块通信
- mysql - Mysql 更新相关表时出现错误 1442
- python - 如何根据另一个表的列填充列?
- java - 如何使用非对称加密在另一个应用程序中解密来自一个应用程序的文本?