如何为PHP脚本找到正确的Hashbang或Shebang

时间:2017-01-18 12:37:59

标签: php shebang hashbang

我在我的cPanel中设置了forwarder,这样任何发送到contact@mydomain.com的电子邮件都会被PHP脚本选中并处理。

#!/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('self@myAnotherDomain.com', '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等等。

我的问题:有没有办法正确/直接/轻松地为不同的cPanel环境(例如phpinfo())或使用任何编码或任何配置文件找到正确的hashbang?

1 个答案:

答案 0 :(得分:1)

要使您的脚本可移植,请尝试使用此代码,

#!/usr/bin/env php

这只会在php中搜索名为$PATH的可执行文件。这将在> 95%的情况下起作用。如果您找到一个无法使用的系统,那么只需手动查找安装PHP的位置并修改该脚本。