【发布时间】:2018-01-06 11:41:54
【问题描述】:
我想在我的 php 脚本中执行 git 命令。这是我的脚本 demo.php。
<?php
exec("ssh -v > log1.txt 2>&1");
exec('git clone git@github.com:xxx/xxx.git >log.txt 2> &1',
$out,$ret);
?>
当我执行这个时:
php demo.php
它克隆目标项目。但是,当我通过 fpm 在浏览器中键入 url 执行它时,它会将请求发送到 nginx,然后 nginx 将此请求传输到fpm。
type url: localhost:port/demo.php
现在遇到麻烦了,输出如下:
log1.txt
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
fpm和ssh执行的这个脚本好像已经安装好了。
但是 log.txt 如下:
Cloning into '/home/geek/xxx/phpStudy/idl'...
error: cannot run ssh: No such file or directory
fatal: unable to fork
从这个文件执行git clone时好像找不到ssh命令。
我可以用cli,我可以用fpm执行ssh命令,但是我不能运行ssh 与 git clone 和 fpm。这个问题折磨了我好几天。我会很感激任何建议。
【问题讨论】:
-
如果您想澄清或为您的问题添加详细信息,请编辑您的原始问题而不是重新发布它。
-
链接的可能重复的@Paul 被标记为this question 的可能重复(也由@Paul)
-
我不熟悉以这种方式使用 git(我的 IDE 为我这样做)但是,我可以说
exec是彼此独立完成的,所以如果一个依赖于另一个,它不会工作。这就像在单独的控制台中运行每个命令。但就像我说的,我不知道他们是否相互依赖。附言解决这个问题的方法是从运行命令的 PHP 运行 bash 或 shell 脚本。 -
@Milk 是的,那是因为那个问题缺少任何调试,后一个问题告诉你该怎么做。如果这里的发布者对其进行编辑以包含这些结果,我将删除它。