我如何解决“;糟糕的口译员”;解释器位于非标准位置时出错


How do I solve "bad interpreter" error when interpreter is in non-standard location?

所以我的第一个问题是我在GoDaddy上托管。

第二个问题是,当我尝试通过SSH执行以下PHP脚本时。。。

./searchreplacedb2cli.php -h hostname -u username -d databasename -p 'password'

我收到一个/usr/bin/php: bad interpreter: No such file or directory错误。这是因为在共享主机上,没有/usr/bin/php。相反,我想要的php-cli位于以下位置:

/usr/local/php5_3/bin/php

所以,我手动将脚本中的shebang声明更改为…

#!/usr/local/php5_3/bin/php -q

果不其然,它是有效的。

但是,我不想手动编辑这个脚本。我正在寻找一种通过编程规避这个问题的方法。我使用这个脚本来动态部署Wordpress网站。每次使用它时,我都会从git存储库中wget它。此外,它会定期从bash脚本中删除和安装,因此每次都不能在文本编辑器中修改它。

有没有一种方法可以将备用解释器传递给bash命令?比如,"如果你找不到默认的解释器,就用这个"。

我试过了,但不起作用:

./searchreplacedb2cli.php -h hostname -u username -d databasename -p 'password' | /usr/local/php5_3/bin/php

因为它是共享主机,我没有将/usr/bin.php符号链接到正确位置的权限。

我的下一个想法是,通过bash,使用sedreplace命令编辑php脚本的第1行。我想我会先在这里询问其他选择。谢谢

如果只是这个主机,请将/usr/local/php5_3/bin/添加到$PATH中,并使用这个shebang:

#!/usr/bin/env php