-bash: ./cli: /usr/bin/php^M: bad interpreter: No such file or directory

今天在看php cli的时候遇到一个问题,就是,我通过flashFXP软件连接Linux服务器以后,创建了一个cli.php的文件在/var/www目录下,然后通过Windows中的编辑器notepad++,敲入如下代码:

#!/usr/bin/php
<?php
echo "sdfas";
?>

然后在Linux的命令行中,直接执行该文件,

/var/www/cli.php

显示错误信息如下所示:

-bash: ./cli.php: /usr/bin/php^M: bad interpreter: No such file or directory

然后再次用以下方式运行

[root@VM_114_93_centos www]# /usr/bin/php /var/www/cli.php 
sdfas

运行正常。

然而再次看错误信息:

-bash: ./cli.php: /usr/bin/php^M

发现,程序中的第一行是

#!/usr/bin/php

为何此处会多一个^M

注:将 PHP 用于外壳脚本。可以在写一个脚本,并在第一行以 #!/usr/bin/php 开头,在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码,然后为该文件设置正确的运行属性(例如:chmod +x test)。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。


原来:

在Windows中和Linux中,行位换行符的不一致所造成的。

windos 行尾 \r\n

linux 行尾 \n

^M 就是 \r,回车符号

解决方法如下:

[root@VM_114_93_centos www]# vim /var/www/cli.php

然后输入 :set ff 或者 :set fileformat

可见其输出为fileformat=dos

利用如下命令修改文件格式

:set ff=unix 或 :set fileformat=unix

然后 :wq 保存退出

然后再执行

/var/www/cli.php

显示如下:

sdfas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值