私のWebサイトでは、Gitステータス(主に現在のコミットとブランチだけでなく、git ls-files --modified
サーバー上で直接変更されたすべてのファイルも表示)を報告しているので、最新の状態であることを一目で確認できます。以前は機能していましたが、最新のGitでは、リポジトリを所有していないユーザーがそれを読むことはできません。
このコマンドはgit config --global --add safe.directory {$dir}
原則として有効ですが、いいえうまくいかないので、うまくいかなかったので、www-data
ファイルを作成$HOME
できる場所はありません。.gitconfig
答えはですfatal: $HOME not set
。
ApacheにGitリポジトリに関するいくつかの事実を読み取る簡単な方法はありますか?これは、などのコマンドexec()
を実行するために使用されるすべてのPHPコードです。git branch --show-current
git log -1 --pretty=%H
ベストアンサー1
環境変数を設定できます。したがって、GIT_CONFIG_GLOBAL
変更された構成を指すように設定すると、「no-$homeの問題」が解決されます。
を使用すると、-c key=value
各通話の設定オプションを個別に設定でき、必要に応じてgit
作業することもできます。
しかし、ええと。個人ファイルに対する読み取り権限を持つユーザーとしてPHPを実行しているようです!または、共有ストレージを専用ユーザーとして実行します。この場合、そのユーザーとしてPHPインタプリタを実行する方が適切です。または、Apacheを実行しているPHPインタプリタにプライベートファイルへの読み取りアクセスを許可します。これは基本的に一般的な仕事には適していません。実際には、1つのアクションのみを実行するラッパースクリプト(正しいオプションを使用してgitを呼び出し、引数としてブランチ名を渡すなど)を使用すると、これを追加する方が賢明です。 / etc / sudoersリポジトリを所有しているユーザーとして、PHPはそのタスクを実行するためにsudoを実行できますが(そのタスクのみを実行できます)、データを読み取ることはできません。
この事実を公に明らかにしたら、付け加えたいです。
exec()
これはgit branch --show-current
、次のコマンドを実行するために使用されるすべてのPHPコードです。git log -1 --pretty=%H
リモートコードの実行可能性が非常に高いようです。これを行うライブラリを使用する方が良いでしょう!