방금 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 파일을 검색합니다.