我有一个来自Github的git pull网络钩子,在两个远程上,GoDaddy [生产环境]和Bluehost [预发布环境]。这个问题不是关于这些公司本身,而是可能导致设置差异的原因。我有这个脚本,我已经将其设置为github.com上的提交后挂钩:
<?php
$output = shell_exec('git pull origin master');
echo "<pre>$output</pre>";
?>
当我在Github代码库上提交时,钩子会触发并在Bluehost上正常运行。但在Godaddy上它不起作用。
Bluehost浏览器响应:
"already up to date". Pull command works, and the Bluehost repo is updated.
Godaddy浏览器响应:
<pre></pre> Pull command has not worked. Repo not updated.
当我通过浏览器运行此脚本时:
<?php
$output = shell_exec('ls');
echo "<pre>$output</pre>";
?>
我在两个服务器上都得到了正确的'ls'目录输出。
当我通过SSH进入目录时,我可以手动发出'git pull origin master'命令,在两个服务器上都可以正常工作。那么这是否意味着Godaddy允许PHP发出一些命令,但不允许其他命令?我能不能修复这个问题?不可能没有人自动部署到Godaddy!
shell_exec
是否会执行任何东西?比如echo
或者ls
? - sobolevn