CLI无法访问getenv

时间:2014-07-04 15:45:08

标签: php mysql cron command-line-interface

我有一个网站,代码在我使用的签约开发人员之间共享,因为我不想让他们完全访问mysql密码,salt,密钥等,他们使用环境变量存储在网站.conf文件中:

SetEnv SALT ABCxyz123
SetEnv PASS XYZabc123 

......等等

使用这种方法我可以让他们在他们自己的环境中处理某些功能/脚本,我可以安全地给他们一份我的网站代码和/或mysql表的副本(或部分),而无需他们知道任何敏感变量。

我有一个配置文件,我的所有网站php页面都使用以下命令来检索数据库密码:

$db_pass = (getenv('PASS'))or die('Could not get mysql password!');

问题是,如果我创建一个cron作业来运行php文件,那么CLI无法访问getenv(),因此脚本将无法运行。我不想最终只运行一个单独的配置文件,因为这些cron脚本能够运行,因为配置文件中有很多功能,包括许多功能。

有没有办法可以将这些重要变量存储在我的网站代码之外,并且仍然可以让CLI访问它们?

1 个答案:

答案 0 :(得分:0)

您可以使用系统实用程序直接访问所需的变量:

保存到 demo.php chmod + x demo.php&& ./demo.php 。您也可以将其安装为crontab,以便在那里工作。


#!/usr/bin/php
<?php

  //access the environment using system commands:
  $data = system("/usr/bin/printenv LANG") . " | " . system("/usr/bin/printenv HOME");
  file_put_contents("test.txt", $data);

  //if you want to write variables to the environment, I suggest writing them to a global
  //file such as `~/.env`.  Then in your `.bashrc` you can `source ~/.env` to load the 
  //variables you saved.  
  //If this is an acceptable solution, let me know and I'll write some shell scripts.