PHP Shebang不工作

时间:2015-09-20 11:27:22

标签: php shell shebang

注意:此问题已解决。它是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

一切正常,String“starting ...”按预期显示。

我哪里错了?

EDIT1: 像这样使用shebang:

#!/usr/bin/php

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

3 个答案:

答案 0 :(得分:2)

我想我已经得到了它(感谢 @ EDIT1 (来自问题)):

关于行结尾的几句话( EOLN s):

  • 赢取:&#34; \ r \ n &#34; (&#34; \ x0D \ x0A &#34;, CR + LF
  • Nix :&#34; \ n &#34; (&#34; \ x0A &#34;, CR

您的 .php 文件 Win 样式 EOLN (至少是 shebang 行中的那个)虽然有些 Nix 口译员不喜欢 LF ,但这就是这种情况。

作为旁注, nano (或任何体面的编辑器,事实上)在编辑文件时计算出文件中的行结尾,当添加新行时,他们的 EOLN 与现有的一致。

要使工作正常,请将文件 EOLN 转换为 Nix 样式:

dos2unix /var/projects/user-backup.php

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这是行结尾!!虽然我使用了&#34; nano&#34;为了在putty窗口中编辑文件,我仍然得到了windows-line-endings。

使用&#34; dos2unix&#34;转换所有行结尾,事情就结束了!

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