shebang #!/usr/bin/perl 및 #!/usr/local/cpanel/3rdparty/bin/perl에서 사용되는 경로 수정

shebang #!/usr/bin/perl 및 #!/usr/local/cpanel/3rdparty/bin/perl에서 사용되는 경로 수정

이 문제를 해결하는 데 도움을 줄 수 있는 사람을 찾을 수 없습니다. 최근 centos 업데이트 이후 내 CGI 스크립트는 다음을 사용합니다.

#!/usr/local/cpanel/3rdparty/bin/perl

또는

#!/usr/bin/perl

이전 Perl 버전 5.16.3을 사용하려고 합니다.

하지만 현재 cpanel 버전 5.30.0을 사용해야 합니다.

SSH에 로그인하고 실행하면

/usr/local/cpanel/3rdparty/bin/perl -v나는 5.30.0을 얻습니다

그래서 Shebang에서 사용하는 경로를 편집하고 이를 다음과 같이 편집해야 합니다./usr/local/cpanel/3rdparty/bin/perl

돕다?

답변1

Perl 스크립트에서 -line이 적용되지 않는 것 같다면 #!(여기서는 그런 것 같습니다), 스크립트가 다음과 같이 작성되었기 때문일 가능성이 높습니다.분명히통역사, 예를 들어

perl somescript.pl

이 경우 #!- 라인은 완전히 무시되며,실제 perl사용되는 바이너리는 $PATH.

스크립트가 호출되는 방식을 변경할 수 있는 경우 이상적으로는 이를 변경하여 명시적 perl명령을 제거해야 합니다. 이렇게 하면 #!스크립트에서 -lines가 활성화됩니다(스크립트가 실행 가능하다고 가정).

또는 발견된 첫 번째 바이너리가 사용하려는 바이너리가 $PATH되도록 변수를 정렬할 수 있습니다. perl예를 들어 다음과 같이 설정할 수 있습니다.

PATH=/usr/local/cpanel/3rdparty/bin:$PATH

CGI 스크립트 실행을 위한 환경입니다. 이렇게 하면 문제가 해결됩니다.~하지 않는 한호출이 usr/bin/perl명시적입니다. 질문에는 어떤 웹 서버 소프트웨어나 프레임워크가 사용되고 있는지 또는 Perl 스크립트를 실행하도록 구성하는 방법이 나와 있지 않으므로 이것이 제가 말할 수 있는 전부입니다.

답변2

수정 사항을 찾으세요:

SSH에서 루트로:

cd /usr/bin

rm -f perl

ln -s /usr/local/cpanel/3rdparty/bin/perl .

이것은 둘 다에 대한 shebang을 설정합니다

#!/usr/bin/perl

그리고

#!/usr/local/cpanel/3rdparty/bin/perl

cpanel을 사용하여 업데이트된 Perl을 찾았습니다.

/usr/local/cpanel/3rdparty/bin/perl

관련 정보