PHP:$argv 变量搞砸了数据库连接中的环境变量

问题描述 投票:0回答:0

我有一个奇怪的问题。 我正在使用 exec 从另一个 PHP 页面(第 1 页)中“触发”一个 PHP 页面(第 2 页),它将 $argv 变量发送到第 2 页。

问题是,第 2 页上的数据库连接中断,因为 $argv 变量弄乱了我的数据库连接环境变量($_ENV['DB_USER'] 和 $_ENV['DB_PW'])。 我收到类似密码不正确的错误消息([1045] 用户访问被拒绝...)。 仅当我使用第 1 页上的 exec 命令调用第 2 页时才会发生,否则连接正常。

如果我注释掉数据库连接,$argv[1](我需要的 ID)会毫无问题地传递到第 2 页。

如果数据库连接具有用户和密码的硬编码值,它工作正常。

我已经测试了很多,并且肯定 $argv 搞砸了我的环境变量。

我尝试将第 1 页的变量封装在 escapeshellarg 中,但没有区别。

有人知道为什么吗?

顺便说一下,我不想使用 includes 或 cUrl 来运行第 2 页。

提前致谢。

编辑:

第 1 页:

$doc_id = "123";
$doc_id = escapeshellarg($doc_id);

$path = $_SERVER['DOCUMENT_ROOT'];
exec('php '.$path.'/dashboard/test/argv-2.php '.        
$doc_id .' > /dev/null 2>/dev/null &');

第2页

require_once __DIR__ . '/../conn/conn_1.php';


$doc_id = $argv[1]; 

//get doc title
$rowDocTitle = getDocTitle($db,$doc_id);
$doc_title = $rowDocTitle['doc_title'];


//email
$tox = '[email protected]';
$subjectx = 'Doc title';
$messagex = "Doc title: " . $doc_title . "\n\n";
$headersx = 'From: [email protected]' . "\r\n" .
    'Reply-To: [email protected]' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
mail($tox, $subjectx, $messagex, $headersx);
php argv
© www.soinside.com 2019 - 2024. All rights reserved.