【问题标题】:PHP can't execute shell from browserPHP无法从浏览器执行shell
【发布时间】:2014-05-07 23:46:26
【问题描述】:

我正在关注this tutorial

通过浏览器访问脚本时,我无法让gitpull.php 脚本执行 git pull。

我可以从远程服务器上的 shell 手动执行 git pull

我可以手动运行php脚本:

<?php `git pull`; 

如果我在 shell 中显式调用脚本,它将使用反引号来运行 shell。 php gitpull.php

我已经检查了 php 文件的权限,该文件属于 www-data 用户。为什么我可以通过 shell 运行脚本而不是浏览器?

【问题讨论】:

  • 您是否进行了测试以确保 php 本身可以正常工作?只需一个简单的&lt;?php echo "Hello world!"; 即可。

标签: php git


【解决方案1】:

检查路径和权限。如果您使用的是基于 debian 的发行版,还将所有者更改为 www-data。

ie: chown www-data:www-data scriptname

并检查 php 错误日志以获取详细信息。

【讨论】:

  • 错误日志报告:“请确保您具有正确的访问权限并且存储库存在。主机密钥验证失败。致命:无法从远程存储库读取。”这很奇怪,因为如果我在 ssh 中手动执行文件,它将运行。这是在 chown 用户和组到 www-data 之后。
  • 我想知道这是否与如何为 github 设置 ssh 密钥有关。当我最初创建密钥时,我以 user1 身份登录。是否需要为 web 用户创建 github ssh 密钥?
  • root 用户请使用命令:su www-data,并尝试直接运行命令。你会看到php遇到的错误。
【解决方案2】:

可能是您的网络服务器的权限。 Web 服务器需要权限才能执行文件。

您使用的是什么网络服务器?

确保文件设置了执行位。

【讨论】:

  • 世界权限设置为读取和执行。这是在运行 Apache2 的 Ubuntu 上。您是指对文件的权限还是我缺少的配置文件或 php.ini 中的权限?我相信安全模式已从 php5 中删除,它可以阻止 shell 执行。
  • 我想知道 git 是否使用与您的用户帐户关联的环境变量,当您通过 Web 服务器用户运行时,这些变量无法访问。
猜你喜欢
  • 2013-06-07
  • 2010-10-07
  • 2019-10-08
  • 1970-01-01
  • 2012-09-26
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
相关资源
最近更新 更多