Acabei de compilar o PHP e queria fazer um test drive, mas php index.php
não está funcionando, no entanto, ./php index.php
funciona.
Pelo que vale a pena, posso fazer httpd -t
sem problemas no diretório httpd/bin do Apache.
# 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
Há algo que estou perdendo? Se eu pudesse ser apontado para uma pergunta que responde a algo semelhante, isso seria uma grande ajuda. A partir de agora, nem sei como pesquisar esse problema no Google corretamente.
Se for importante, estou usando SSH do meu host do Windows para o meu VirtualBoxed CentOS 7.
Se o binário não estiver em um dos diretórios listados em sua
PATH
variável, você não poderá executá-lo sem especificar o caminho para ele (um caminho relativo ou absoluto).Como você especificou
./
(o diretório atual) e como o executável estava disponível no diretório atual, o shell sabia onde encontrá-lo.A forma correta de resolver seu problema caso queira usar
php
e os demais executáveis no mesmo diretório, sem precisar sempre especificar o caminho, é somar/usr/local/php/x64/7.2.2/bin
ao valor dePATH
no seu~/.bashrc
arquivo:O novo caminho estará ativo em todos os novos shells.
Dessa forma, você não precisa fazer
sudo
root para adicionar links simbólicos em qualquer lugar que possa confundir futuras instalações de software em sua máquina.Quando você escreve
php /caminho/para/algumarquivo.php
em seguida, o bash (shell padrão do Linux) primeiro procura php nos caminhos especificados na variável global $PATH. Quando você cria um link simbólico para php em /usr/local/bin, isso está funcionando porque /usr/local/bin está presente por padrão em $PATH na maioria dos tipos de Linux. Você pode verificar por:
Deve vir assim:
A mesma coisa que você está alcançando quando está fornecendo /usr/local/php/x64/7.2.2/bin em $PATH ao contrário.
Quando você escreve
ou
bash interpreta que você está fornecendo o caminho para o arquivo php manualmente e não o procura em $ PATH. Em vez disso, ele procura o arquivo php no caminho que você especificou.