githubリポジトリのPHPスクリプトがあり、git pull
WebサービスフックURLに次のように設定されています。
<?php
echo shell_exec('~/git/usr/bin/git pull 2>&1');
?>
ブラウザでこのスクリプトを開くと、次のエラーが発生します。
git-remote-https: error while loading shared libraries: libcurl.so.3: cannot open shared object file: No such file or directory
私はCentOSバージョン5.9を実行しているgodaddyサーバーにあり、次のものをuname -mrs
生成します。
Linux 2.6.18-348.3.1.el5PAE i686
私がこれをしようとしたとき:
yum install curl
yum
コマンドが見つからないというエラーメッセージが表示されます。
git pull
サーバーにsshでアクセスして端末で操作を実行したり、同様のスクリプトを実行したりすると正常に機能し、php myscript.php
すべての変更が適用されるため、ここで何が起こっているのかわかりません。ブラウザで実行すると、依存関係はどのように変更されますか?
どんな助けでも大変感謝します。
ベストアンサー1
まず、これはUbuntu関連の問題ではありません。ここではどのトピックを質問できますか?– 共有ホスティングのCentOSで実行されるPHPスクリプトについて質問しています。誰でもUnixとLinux、スタックオーバーフロー、サーバー障害または他のスタック交換サイトこの質問に答えるのに適しています。
それにもかかわらず、GitHubからインポートするには別のURLを使用しているようです。 HTTPSアクセスがgit-remote-https
必要です。curl
SSHまたはGit(読み取り専用)プロトコルを使用してください。つまり[email protected]:user/repository.git
、git://github.com/user/repository.git
リモートURLを変更するか、リポジトリを再複製してみてください。また、Gitが正しいディレクトリで実行されていることを確認してください(例:add cd /my/repo;
toshell_exec
コマンド)。また、自動プーリング用のリモートブランチを指定するのが最善ですgit pull origin master
。
GoDaddyは特定のライブラリへのPHPスクリプトのアクセスを制限することができ、これはPHPコンテキスト内で実行されるシェルスクリプトにも影響します。他のすべての方法が失敗した場合は、リモートストレージをポーリングすることを検討できます。つまり、git pull
Cronを使用して定期的にポーリングします。