如何使用exec()从php推送git

这是我的 push.bat </ strong>文件</ p>

  echo“你好世界!”

通过git提交。
call git commit -m“”sadf“
call heroku accounts:set abhishek84
call git push heroku master
</ code> </ pre >


我可以通过在cmd中运行push.bat文件</ strong> </ p>来推送到我的存储库

我 我想从php推送到我的repo,尝试下面的代码片段,但没有一个对我有用。</ p>

  exec(“psexec -d push.bat”); 
</ 代码> </ pre>

结果:</ strong> PHP页面无限加载</ strong> </ p>

  $ WshShell =  new COM(“WScript.Shell”); 
$ oExec = $ WshShell-&gt; Run(“cmd / C abhishek3.bat,0,false);
</ code> </ pre>

< p> 结果:页面停止加载一段时间后无法正常工作</ strong> </ p>

  exec(“cmd.exe / c abhishek3.bat”)
< / code> </ pre>

结果:页面在一段时间后停止加载且无效工作</ strong> </ p>

编辑:</ STRO ng>
收到以下片段但没有任何效果。 </ p>

  exec(“hstart.exe / NOCONSOLE \”cmd.exe / c \“abhishek3.bat \”\“”); 
</ code> </ pre >

上面的代码片段从cmd运行时成功运行但是从php运行时通过exec()无效。 下载hstart(隐藏启动二进制) </ p>
</ div>

展开原文

原文

Here is my push.bat file

echo "Hello world!"
cd abhishek3/
call git add .
call git commit -m "sadf"
call heroku accounts:set abhishek84 
call git push heroku master

I am able to push to my repository by running push.bat file in cmd

I want to push to my repo from php, tried following snippets but none of them worked for me.

exec("psexec -d push.bat");

Result: PHP page loads indefinitely

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C abhishek3.bat, 0, false);

Result: Page stops loading after a while and nothing works

exec("cmd.exe /c abhishek3.bat")

Result: Page stops loading after a while and nothing works

EDIT: Tried the following snippet but nothing worked.

exec("hstart.exe /NOCONSOLE \"cmd.exe /c \"abhishek3.bat\"\"");

The above snippet runs successfully when run from cmd but when run from php through exec() didn't worked. Download hstart (Hidden Start Binary)

douli7841
douli7841 我从localhost运行web服务器。当我运行php-r“$ret=exec('abhishek3.bat');echo$ret;”从cmd它成功执行批处理文件。如果我从网页运行它不执行推送..
大约 6 年之前 回复
dqg17080
dqg17080 正如您所说的“页面加载”我假设您正在通过Web服务器进行测试?你试过phpcli吗?可能是网络服务器与你的用户运行其他私有并停止它?
大约 6 年之前 回复

1个回答




  1. 检查网络用户的权限是否正确(可以访问文件并执行git)</ li>

  2. 检查git的路径以及它可能需要的任何环境变量。 您可能必须在脚本中设置这些环境变量并使用绝对路径)</ li>
  3. 检查IIS或apache(无论您使用的是哪种)允许执行一般程序和bat文件(例如,如果它 是apache,您可能需要配置httpd.conf或htaccess,具体取决于您的配置)</ li>
    </ ol>
    </ div>

展开原文

原文

  1. check the permissions for the web users are correct (It can access the files and execute git)
  2. check the path for git and any environment variables it may need. You may have to set those environment variables in your script and use absolute paths)
  3. check IIS or apache (whichever you are using) is allowed to execute programs in general and bat files (for example if it is apache, you may have to configure httpd.conf or htaccess depending on your configuration)

douluo3256
douluo3256 谢谢..得到它.. :)
大约 6 年之前 回复
dongqiang1894
dongqiang1894 Web服务器确实作为单独的用户运行 - 通常作为IIS_IUSR。 PHP cli作为您的用户(管理员或您登录的任何用户)运行,凭据存储在您的用户目录中,因此它可以从命令行运行,但不能在IIS_IUSR(或任何Web用户)目录中运行
大约 6 年之前 回复
dongwei5794
dongwei5794 如果是这种情况那么为什么我能够通过PHP CLI调用git push heroku master。
大约 6 年之前 回复
duan5731
duan5731 可能缺少SSH密钥/ credentials / known_hosts作为Web用户
大约 6 年之前 回复
duanfu1942
duanfu1942 防火墙已被禁用。 此外,我将执行策略设置为不受限制但git push heroku master不起作用。
大约 6 年之前 回复
duannian7116
duannian7116 我记得这是窗户。 尝试关闭防火墙。 这也是powershell,检查executionpolicy并将其设置为不受限制
大约 6 年之前 回复
douzong5835
douzong5835 它看起来像防火墙限制。 尝试(1)暂时关闭iptables(2)暂时关闭selinux。
大约 6 年之前 回复
dream198731
dream198731 git init成功运行.. git commit成功运行... git push在运行php网页时不运行(从PHP CLI执行时运行..)可能是什么原因造成的?
大约 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐