1

下面的命令是一个适用于我的 shell 命令。

php -f /home3/kintest2/www/project/keygen_msql_adjuster.php

我想做的是让这个命令从一个 php 文件运行。

欢迎任何提示

4

4 回答 4

1

您可以使用反引号systemshell_execpopen,具体取决于您要对启动的进程执行的操作。

于 2012-07-20T14:47:05.463 回答
1

有什么问题:

include('/home3/kintest2/www/project/keygen_msql_adjuster.php');

或者有什么特别的原因要启动一个全新的 PHP 解释器实例?

我注意到使用的一个很好的理由include是因为其中声明的任何内容都会污染您当前实例的命名空间。

另一方面,打电话shell_exec或类似的事情可能是一个巨大的安全漏洞。但是,如果您的代码在受限环境中运行,那可能并不重要。

于 2012-07-20T14:48:47.403 回答
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");
}
于 2014-12-17T20:09:03.870 回答
0

我想你正在寻找shell_exec

echo shell_exec ( "php -f /home3/kintest2/www/project/keygen_msql_adjuster.php" );
于 2012-07-20T14:46:48.493 回答