私は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ファイルを検索します。