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

バイナリが変数にリストされているディレクトリの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ファイルを検索します。

関連情報