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を使用して定期的にポーリングします。
答え2
yum install curl
yumコマンドが見つからないというエラーが発生します。
誰ですかroot
?あなたのものに$PATH
それを含めないかもしれませんか/sbin:/usr/sbin
?これが問題ではないことを確認し/sbin/yum
てください。/usr/sbin/yum
$PATH
私はCentOSの専門家ではありませんが、実際に作業していますが、CentOSがインストールされて動作しない場合、root
システムyum
が深刻に破損する可能性があります。私が知る限り、yum
これはCentOSのデフォルトのパッケージマネージャであり、そこにある必要があり、動作するはずです。
~/git/usr/bin/git
本当に変な道です。git
パッケージをホームディレクトリに手動で抽出したと思いますか?
error while loading shared libraries: libcurl.so.3
さて、パッケージを手動で抽出した場合、パッケージが依存しているライブラリが見つからない可能性がありcurl
ますgit
。ライブラリを抽出してみることもできますが、ホームディレクトリに入れるだけでは魔法のようには機能しません。ライブラリが動作する$LD_LIBRARY_PATH
ようにするには、あちこちを歩く必要があるかもしれませんが、私の経験では簡単ではありません。
作業に着手しyum
たら、それを使って `gitパッケージを正しくインストールすると、この問題は解決します。