下面的命令是一个适用于我的 shell 命令。
php -f /home3/kintest2/www/project/keygen_msql_adjuster.php
我想做的是让这个命令从一个 php 文件运行。
欢迎任何提示
您可以使用反引号或system或shell_exec或popen,具体取决于您要对启动的进程执行的操作。
有什么问题:
include('/home3/kintest2/www/project/keygen_msql_adjuster.php');
或者有什么特别的原因要启动一个全新的 PHP 解释器实例?
我注意到不使用的一个很好的理由include
是因为其中声明的任何内容都会污染您当前实例的命名空间。
另一方面,打电话shell_exec
或类似的事情可能是一个巨大的安全漏洞。但是,如果您的代码在受限环境中运行,那可能并不重要。
你也可以考虑使用一个命令运行库来正确处理错误和事情: https ://github.com/kamermans/command
然后你可以像这样运行程序:
use kamermans\Command\Command;
$cmd = Command::factory('php')
->option('-f', 'keygen_msql_adjuster.php')
->setDirectory('/home3/kintest2/www/project')
->run();
或者,更简单地说:
use kamermans\Command\Command;
$cmd = Command::factory('php -f /home3/kintest2/www/project/keygen_msql_adjuster.php');
与 PHP 的内置方法不同,如果命令失败,此方法将抛出 PHP 异常,如果需要,您可以捕获并处理:
use kamermans\Command\Command;
use kamermans\Command\CommandException;
$cmd = Command::factory('php')
->option('-f', 'keygen_msql_adjuster.php')
->setDirectory('/home3/kintest2/www/project');
try {
$cmd->run();
} catch (CommandException $e) {
die("The command failed: ".$e->getMessage()."\n");
}
我想你正在寻找shell_exec
:
echo shell_exec ( "php -f /home3/kintest2/www/project/keygen_msql_adjuster.php" );