在 bash 脚本中运行 php:错误“无法打开输入文件”
Posted
技术标签:
【中文标题】在 bash 脚本中运行 php:错误“无法打开输入文件”【英文标题】:Run php in a bash script: error "Could not open input file" 【发布时间】:2016-09-22 22:01:54 【问题描述】:我做了一个简单的脚本,比如:
#!/bin/bash
php /var/www/mysite/script1.php
php /var/www/mysite/script2.php
当我像这样以 root 身份运行它时:
bash update.sh
我收到以下错误:
Could not open input file: /var/www/mysite/script1.php
Could not open input file: /var/www/mysite/script2.php
怎么了?我尝试在我的 php 文件和所有文件夹上使用权限 777 来访问它。当我在命令行中直接执行 php /var/www/mysite/script1.php 时,它工作正常。
【问题讨论】:
尝试使用:sudo bash update.sh
看看会发生什么。
您执行 bash 脚本的方式是否与手动运行 php
命令的方式相同?如果您通过 Web 服务或其他方式运行其中一个,则路径可能会有所不同。
不会是回车结束行的问题吧?您可以执行以下操作:dos2unix update.sh > newbatchfile
并尝试新的吗? (比较文件大小,如果 newbatchfile 较小:宾果游戏)
感谢@Jean-FrançoisFabre 现在可以使用了!
【参考方案1】:
当批处理文件通过某些 Windows 兼容的编辑器或其他意外时,可能会在行尾附加回车符(就在换行之前)
所以所有的行例如这一行:
php /var/www/mysite/script1.php
包含一个不可见的 \r
字符,它被解释为参数 py php
=> 文件 /var/www/mysite/script1.php<invisible char>
未找到的一部分。
执行以下操作:
dos2unix update.sh > newbatchfile.sh
或
tr -d "\015" < update.sh > newbatchfile.sh
(比较文件大小,如果 newbatchfile 较小,问题是 CR 字符并已修复)
【讨论】:
以上是关于在 bash 脚本中运行 php:错误“无法打开输入文件”的主要内容,如果未能解决你的问题,请参考以下文章