我有一个简单的 php 脚本来从我的 github 存储库中获取文件
<?php
echo shell_exec('git pull');
?>
当我 ssh 进入我的服务器并运行该脚本时,如下所示:
php github.php
我看到了这样的输出,文件确实已更新
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From https://github.com/vivek1729/Test
bbe5690..57169ec master -> origin/master
Content-type: text/html
Updating bbe5690..57169ec
Fast-forward
index.html | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
但是当我从浏览器运行此脚本时,我看不到任何输出,并且没有发生 git pull 请求。github.php 的权限是默认的,如下所示:
rw-r--r-- 1 vivekpradhan inetuser 882 Jun 3 09:26 github.php
我还尝试将文件所有权更改为 apache 用户。为了找出 apache 的 Web 用户的名称。我运行后echo shell_exec('whoami');
,输出结果为“vivekpradhan”。因此我认为 apache Web 用户可以访问该特定文件。
我在运行 CentOS 的 godaddy 服务器上。如何让脚本在浏览器 get/post 请求上运行?
这与 Linux 服务器上的某些文件权限有关吗?我已经在服务器上安装了 git。任何帮助都将不胜感激。
答案1
首先,您需要cd
转到正确的目录。Web 服务器运行的脚本通常在文档根目录 ( /var/www
) 中运行。此外,该目录对于 Web 服务器 (用户www-data
) 必须是可写的。