bin 폴더에서 바이너리를 실행할 수 없습니다

bin 폴더에서 바이너리를 실행할 수 없습니다

방금 PHP 컴파일을 마치고 테스트해보고 싶었는데 php index.php작동하지 않지만 ./php index.php작동합니다.

그만한 가치가 있기 때문에 httpd -t아무 문제 없이 Apache의 httpd/bin 디렉토리에서 수행할 수 있습니다.

# pwd
/usr/local/php/x64/7.2.2/bin

# ls -la
total 100620
drwxr-xr-x. 2 root root      163 Feb 19 12:58 .
drwxr-xr-x. 8 root root       76 Feb 19 12:52 ..
-rw-r--r--. 1 root root       19 Feb 19 12:58 index.php
-rwxr-xr-x. 1 root root      887 Feb 19 12:52 pear
-rwxr-xr-x. 1 root root      908 Feb 19 12:52 peardev
-rwxr-xr-x. 1 root root      824 Feb 19 12:52 pecl
lrwxrwxrwx. 1 root root        9 Feb 19 12:52 phar -> phar.phar
-rwxr-xr-x. 1 root root    53504 Feb 19 12:52 phar.phar
-rwxr-xr-x. 1 root root 34058464 Feb 19 12:52 php
-rwxr-xr-x. 1 root root 33900816 Feb 19 12:52 php-cgi
-rwxr-xr-x. 1 root root     2309 Feb 19 12:52 php-config
-rwxr-xr-x. 1 root root 34980264 Feb 19 12:52 phpdbg
-rwxr-xr-x. 1 root root     4593 Feb 19 12:52 phpize

# php index.php
-bash: php: command not found

# ./php index.php
hi

# /usr/local/php/x64/7.2.2/bin/php index.php
hi

내가 놓친 것이 있나요? 비슷한 질문에 답하는 질문을 알려드릴 수 있다면 큰 도움이 될 것입니다. 현재로서는 이 질문을 제대로 Google에 검색하는 방법조차 모릅니다.

중요한 경우 SSH를 사용하여 Windows 호스트에서 VirtualBoxed CentOS 7에 연결합니다.

답변1

바이너리가 변수에 나열된 디렉터리 중 하나에 없으면 PATH해당 경로(상대 또는 절대)를 지정하지 않으면 바이너리를 실행할 수 없습니다.

(현재 디렉터리)를 지정했고 ./실행 파일이 현재 디렉터리에서 사용 가능하게 되었기 때문에 쉘은 이를 어디서 찾을 수 있는지 알고 있습니다.

php항상 경로를 지정할 필요 없이 동일한 디렉터리에 있는 다른 실행 파일을 사용하려는 경우 문제를 해결하는 올바른 방법은 /usr/local/php/x64/7.2.2/bin파일에 값을 추가하는 것입니다.PATH~/.bashrc

PATH="$PATH:/usr/local/php/x64/7.2.2/bin"

새 경로는 모든 항목에서 활성화됩니다.새로운껍데기.

sudo이렇게 하면 나중에 컴퓨터에 소프트웨어를 설치할 때 혼동을 줄 수 있는 심볼릭 링크를 어디에나 추가할 필요가 없습니다 .

답변2

당신이 글을 쓸 때

PHP /경로/to/somefile.php

그런 다음 bash(Linux 기본 셸)는 먼저 전역 변수 $PATH에 지정된 경로에서 php를 검색합니다. /usr/local/bin은 대부분의 Linux 버전의 $PATH에 기본적으로 존재하기 때문에 /usr/local/bin에 PHP에 대한 심볼릭 링크를 생성할 때 작동합니다. 다음을 통해 확인할 수 있습니다:

echo $PATH

다음과 같아야 합니다.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

$PATH에 /usr/local/php/x64/7.2.2/bin을 제공하면 동일한 효과를 얻을 수 있습니다.

당신이 글을 쓸 때

./php /path/to/somefile.php

또는

/usr/local/php/x64/7.2.2/bin/php /path/to/somefile.php

bash는 PHP 파일의 경로를 수동으로 제공하고 $PATH에서 검색하지 않는다고 설명합니다. 대신, 지정한 경로에서 PHP 파일을 검색합니다.

관련 정보