我有一个奇怪的问题。 我正在使用 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 页。
提前致谢。
编辑:
$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 &');
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);