Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;git pull“;不在外面工作_Php_Git_Github - Fatal编程技术网

Php &引用;git pull“;不在外面工作

Php &引用;git pull“;不在外面工作,php,git,github,Php,Git,Github,我正在配置github web钩子以调用以下页面: github.php: <?php shell_exec('git pull'); ?> 但是,当我尝试使用http从外部世界联系页面时,什么都没有发生。我的日志文件中也没有错误。发生了什么?这是因为脚本没有从git存储库根目录运行,您需要直接在php代码中指定正确的git存储库路径: 注意:对于裸存储库,shell只传递--git dir键值。让钩子将输出写到某个地方,这样您就可以得到一些反馈:shell_exec('

我正在配置github web钩子以调用以下页面:

github.php:

<?php 

shell_exec('git pull');

?>

但是,当我尝试使用http从外部世界联系页面时,什么都没有发生。我的日志文件中也没有错误。发生了什么?

这是因为脚本没有从git存储库根目录运行,您需要直接在php代码中指定正确的git存储库路径:



注意:对于裸存储库,shell只传递
--git dir
键值。

让钩子将输出写到某个地方,这样您就可以得到一些反馈:
shell_exec('git pull 2>&1>hook output.log')@poke hook输出仅在通过服务器访问时创建。通过web访问时,文件甚至没有创建。您的web服务器用户是否有权执行
git
?通过您的web服务器从
localhost
运行脚本有效吗?@Chris问得好。我不知道如何从具有权限的web服务器上检查它。坦白地说,我不知道谁是web服务器用户:/嗯,尝试通过HTTP从
localhost
(运行web服务器的机器)触发脚本将是一个很好的起点。如果成功,web服务器用户可以运行Git。@Tom它的输出是什么?此时没有输出all@Tomgit--work tree=/full/path/to/git/repo--git dir=/full/path/to/git/repo/.git pull
在shell中工作吗?@Tom如果您能够在shell中运行该命令,我相信问题出在php的EVN变量中,它似乎找不到
git
app,但当我从服务器上运行
php github.php
时,它工作正常,所以这不是问题所在
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 2), reused 3 (delta 2)
Unpacking objects: 100% (3/3), done.
From https://github.com/mynameise/Octo
   afadfb8..1ad3b76  master     -> origin/master
<?php 

shell_exec('git --work-tree=/full/path/to/git/repo --git-dir=/full/path/to/git/repo/.git pull');

?>