2017-01-18 5 views
2

私は[email protected]に行く電子メールがピックアップされ、PHPスクリプトによって処理されるように、私のcPanelにforwarderを設定しました。PHPスクリプトの正しいHashbangまたはShebangを見つける方法

#!/usr/bin/php -q 
<?php 

$fd = fopen("php://stdin", "r"); 
$body = ''; 
while(!feof($fd)){ 
    $body .= fread($fd, 1024); 
} 
fclose($fd); 

//----doing my tasks, for example:-- 
mail('[email protected]', 'Test Subject', $body); 

?> 

さまざまな種類のcPanelプロバイダを使用して、複数のクライアントにほぼ同じソリューションを実行する必要があります。私の問題は、Hashbang or Shebangと呼ばれる最初の行です。ウェブから私は、次のshebangsは、PHPのバージョンに基づいて有効であることが判明:

For PHP 5.2.x the shebang would be "#!/usr/bin/php" 
For PHP 5.3.x the shebang would be "#!/usr/bin/php53" 
//My test server is running with PHP 5.5 at this moment and "#!/usr/bin/php" works fine. 

ここでも、いくつかは、#!/usr/local/bin/phpまたは#!/usr/local/lib/php、言うなど

私の質問:正しい見つけるためにどのような方法がありますphpinfo()のような異なるcPanel環境に対して、または任意のコーディングを使用するか、または任意の設定ファイルから適切に/直接/簡単にhashbangできますか?

答えて

1

#!/usr/bin/env php 

、代わりにこれを使用してみてください、あなたのスクリプトがポータブルにするためにこれは単にあなたの$PATHphpという名前の実行ファイルを検索します。これは95%以上の症例のように機能します。動作しないシステムが見つかった場合は、PHPがインストールされている場所を手動で検索し、そのスクリプトを修正してください。

+0

これは回答として投稿されましたが、質問に答えるつもりはありません。それはおそらく、編集、コメント、別の質問、または完全に削除されるべきです。 –

+0

@MarcinOrlowski私の考えでは、OPは異なるインストールパスを持つ異なるシステム上でPHPのインストールディレクトリを識別する方法を尋ねていたので、インストールされている場所(移植性)にスクリプトが正しく機能します。私の答えはこれに対する解決策です。理由がわからない理由 – superphonic

+0

おそらく '$/usr/bin/env php' - >'/usr/bin/env:php:そのようなファイルやディレクトリはありません。これはcPanel環境で動作すると書かれている場合を除き、移植可能なソリューションではありません。 –

関連する問題