【发布时间】:2011-12-30 07:44:14
【问题描述】:
如何用 PHP 执行 shell 文件?
我有一个名为sync.sh的文件,那么如何在php中运行该文件以及完成执行后如何获取响应?我认为shell_exec() 将有助于触发文件,但我怎样才能得到脚本是否正确完成任务的响应?
【问题讨论】:
如何用 PHP 执行 shell 文件?
我有一个名为sync.sh的文件,那么如何在php中运行该文件以及完成执行后如何获取响应?我认为shell_exec() 将有助于触发文件,但我怎样才能得到脚本是否正确完成任务的响应?
【问题讨论】:
看看exec() 函数。你可以传入一个 return_var 来保存 shell 脚本的退出代码。
$out = array();
$status = -1;
exec( '/path/to/sync.sh', $out, $status );
if ( $status != 0 ) {
// shell script indicated an error return
}
需要注意的一点是,脚本将以 Web 服务器的权限运行,而不是您作为用户自己的权限。
另外,请务必注意文档的安全相关警告:
当允许将用户提供的数据传递给这个函数时,使用 escapeshellarg() 或 escapeshellcmd() 以确保用户无法欺骗 系统执行任意命令。
【讨论】:
sh sync.sh。这不需要 sync.sh 是可执行的。
返回值
执行命令的输出,如果发生错误,则为 NULL。
只需获取该函数的返回值即可。
$result = shell_exec('sync.sh');
$result 将包含您想要的内容。
【讨论】: