【问题标题】:Run php in a bash script: error "Could not open input file"在 bash 脚本中运行 php:错误“无法打开输入文件”
【发布时间】: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 现在可以使用了!

标签: php bash


【解决方案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 字符并已修复)

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 2012-09-14
    • 2014-07-20
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2013-05-06
    • 2020-07-17
    • 2017-06-28
    相关资源
    最近更新 更多