以下命令是一个适用于我的shell命令。
php -f /home3/kintest2/www/project/keygen_msql_adjuster.php
我想做的是从php文件中运行make命令。
欢迎任何提示
答案 0 :(得分:1)
您可以使用backticks或system或shell_exec或popen,具体取决于您对要开始的流程的处理方式。
答案 1 :(得分:1)
出了什么问题:
include('/home3/kintest2/www/project/keygen_msql_adjuster.php');
或者您是否有特殊原因需要启动一个全新的PHP解释器实例?
我注意到不使用include
的一个好理由是因为其中声明的任何内容都会污染您当前实例的命名空间。
另一方面,调用shell_exec
或类似内容可能是大量安全漏洞。但是,如果您的代码在受限制的环境中运行,那可能无关紧要。
答案 2 :(得分:0)
我认为您正在寻找shell_exec
:
echo shell_exec ( "php -f /home3/kintest2/www/project/keygen_msql_adjuster.php" );
答案 3 :(得分:0)
您可能还考虑使用正在运行的命令运行库来正确处理错误和事情: 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");
}