PHP Shebang 不工作

PHP Shebang not working

注意:这个问题已经解决了。它是 shebang line not working

的副本

这是我的:

#!/usr/bin/env php
<?php
echo "starting";

文件可执行“-rwxr-xr-x”

我用完整路径调用文件

/var/projects/user-backup.php

但我只收到错误消息“:没有这样的文件或目录”

使用

调用脚本
php /var/projects/user-backup.php

结果字符串 "Starting..." 按预期显示。

即使我尝试

 /usr/bin/env php /var/projects/user-backup.php

一切正常,字符串 "starting..." 按预期显示。

我哪里错了?

编辑1: 像这样使用 shebang:

#!/usr/bin/php

导致错误消息“^M:错误的解释器:没有这样的文件或目录” 虽然肯定有 /usr/bin/php (/usr/bin/php -> /etc/alternatives/php 和 /etc/alternatives/php -> /usr/bin/php5)

/usr/bin/php放入文件/etc/shells.

这是行尾!!尽管我使用 "nano" 在 putty-window 中编辑文件,但我仍然得到 windows-line-endings.

使用 "dos2unix" 转换所有行尾后,一切顺利!

比较这个问题的答案: shebang line not working

我想我明白了(感谢 @EDIT1(来自问题)):

关于行尾的几句话 (EOLNs):

  • Win: "\r\n" ("\x0D\x0A", CR + LF)
  • Nix: "\n" ("\x0A", CR)

您的 .php 文件具有 Win 样式 EOLNs(在至少 shebang 行中的那个),而一些 Nix 口译员不喜欢 LF,并且这里就是这种情况。

作为旁注,nano(或任何像样的编辑器,事实上)在编辑文件和添加新行时找出文件中的行结尾, 他们的EOLN与现有的一致

为了让事情正常进行,请将文件 EOLNs 转换为 Nix 样式:

dos2unix /var/projects/user-backup.php