github 저장소의 PHP 스크립트가 있으며 git pull
웹 서비스 후크 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
우선 이것은 우분투 관련 문제가 아닙니다.여기서는 어떤 주제를 질문할 수 있나요?– 공유 호스팅의 CentOS에서 실행되는 PHP 스크립트에 대해 질문하고 있습니다. 누구나유닉스와 리눅스,스택 오버플로,서버 장애, 또는다른 스택 교환 사이트이 질문에 답하는 데 더 적합합니다.
그럼에도 불구하고 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;
to shell_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 패키지를 올바르게 설치하면 이 문제가 해결될 것입니다.