【发布时间】:2013-02-10 05:26:59
【问题描述】:
我有一个 shell 脚本deploy.sh,它的内容如下:-
echo "0 Importing the code"
eval "git pull -u origin master"
echo "1 Backing up existing data in database.."
// -- other code follows here
当我直接使用终端执行脚本时,我得到以下输出:-
0 导入代码 远程:计数对象:5,完成。 远程:压缩对象:100% (2/2),完成。 远程:总计 3(增量 1),重用 0(增量 0) 拆包对象:100% (3/3),完成。 来自 bitbucket.org:user/repo * 分支主 -> FETCH_HEAD 更新 db13xxx..6705xxx 1 备份数据库中的现有数据..这是正确的。但是,我编写了一个 PHP 脚本,我可以使用它通过 http 调用 deploy.sh 脚本。这个php页面的内容如下:-
$output = `./deploy.sh`;
echo '<pre>', $output, '</pre>';
当我通过浏览器调用这个 php 文件时,实际上是调用了 shell 脚本,我得到了以下输出:-
0 导入代码 1 备份数据库中的现有数据..问题是eval "git pull -u origin master" 命令没有被执行并且它的输出没有显示出来。知道问题出在哪里吗?
【问题讨论】:
-
eval有必要吗?你不能直接运行echo '0'; git pull -u origin master; echo '1'` 等 -
@Alison,在你说之后,我尝试删除 eval。直接调用它仍然运行,但通过php页面运行时结果相同。
-
你试过在脚本顶部添加
#!/bin/bash吗?
标签: php shell shell-exec