シバン#の追加に少し問題があります! RedHat Linux上の私のPHPスクリプトで。 Shebangを追加した小さなテストコードがあります(さまざまなバリエーションも試しました)が、スクリプトを実行しようとするたびに次のエラーメッセージが表示されます。
エラーメッセージ:
-bash: script.php: command not found
テストスクリプト:
#!/bin/env php
<?php echo "test"; ?>
シバン#!バリエーション:
#!/usr/bin/php
#!/usr/bin/env php
(ほとんどのシステムでは)#!/usr/bin/env php
である必要がありますが、エラーはそれとは関係ありません。
-bash: script.php: command not found
script.phpが見つからないことを示しています。
問題がシバン行の場合、エラーは次のようになります。
bash: script.php: /usr/env: bad interpreter: No such file or directory
おそらく、[script.php
]と入力していて、ファイルが$PATH
のディレクトリにないか、実行可能ではありません。
chmod +x script.php
。./script.php
。2の代わりに、ファイルを$PATH
または $PATH
にリストされている場所に移動/コピー/シンボリックリンクして、スクリプトを含むディレクトリを含めることができます。
スクリプトが/usr/local/bin
になく、実行可能である場合は、次のように、スクリプトの前にphp
を付ける必要があります。
php myscrip.php
シバンのために、私が使用するものは次のとおりです:
このような:
#!/usr/bin/php
またはこれ:
#!/usr/bin/env php
-d
の1回限りの使用に関する@NVRMのコメントへの回答として、これは正しくありません。
chmod +x script
で始まる
#!/usr/bin/php
<?php
phpinfo();
script | grep -E 'memory_limit|error_reporting'
を実行すると、
error_reporting => no value => no value
memory_limit => 128M => 128M
-d
エントリをいくつか追加して、
#!/usr/bin/php -d memory_limit=2G -d error_reporting=-1
<?php
phpinfo();
script | grep -E 'memory_limit|error_reporting'
を再実行すると、次のように表示されます
error_reporting => -1 => -1
memory_limit => 2G => 2G
したがって、複数のオプションを設定できることを示しています。
実際、コマンドライン全体がここで作業しているものです。したがって、拡張機能をロードしたり、別の設定を使用したりすることができます。コマンドラインで実行できるすべてのことを行えます。
ここにいくつかの小さなメモを残します:
同じフォルダ内にあるphpバイナリを使用するには
例として、/usr/bin
からコピーされたphp7.2実行可能ファイルは、hello
スクリプトに沿って同じパスにあります。
#!./php7.2
<?php
echo "Hello!";
それを実行するには:
./hello
どちらも同じように動作します:
./php7.2 hello
これにより移植性が得られますが、システムアーキテクチャに注意してください。phpバイナリはターゲットプラットフォームと一致しない場合があります。
ハッシュバングからの許可されたメモリの設定:
one INI entryをhashbang行から設定できます:
#!/usr/bin/php -d memory_limit=2048M
<?php
phpinfo();
exit;
次に、phpinfo()を使用して、phpが理解したかどうかを確認します。
./myphpProg | grep memory
正しいシェル出力には以下が含まれているはずです:
memory_limit => 2048M => 2048M
上記の実行は、次のコマンドラインと同様です。
php -d memory_limit=2048M myphpProg.**php**
Phpは一度に1つの-dパラメータしか受け入れないため、これがhashbangsに設定できるini値は1つだけである理由です。