【问题标题】:PHP script doesn't run when called by lookup in $PATH variable通过 $PATH 变量中的查找调用 PHP 脚本时不运行
【发布时间】:2013-04-29 14:28:16
【问题描述】:

我的 $PATH 变量中的文件夹中有一个 PHP 脚本。脚本第一行如下:

#!/usr/bin/php

当我通过提供脚本的路径(例如)在 bash 中执行此脚本时

$ ./mattPWDtrim
$ bin/scripts/mattPWDtrim

或者使用 PHP CLI 程序执行它:

$ php mattPWDtrim
$ php bin/mattPWDtrim
$ php -f mattPWDtrim

脚本以预期的输出正常运行。 如果我执行以下操作,它也可以正常运行:

$ `which mattPWDtrim`

但是,如果我尝试在没有 PHP CLI 程序的情况下运行脚本,并且没有指定脚本的路径,则脚本根本不会运行。

有人知道为什么吗?

编辑:这是失败的调用:

$ mattPWD_truncate

不管我是在与脚本相同的文件夹中,还是在我系统上的任何其他位置。

【问题讨论】:

  • “which php”的输出是“/usr/bin/php”,不带引号。

标签: bash php


【解决方案1】:

PHP shell 脚本仍然必须在其中包含<?php 才能启用“PHP 模式”。例如

#!/usr/bin/php
echo 'foo'

输出为echo 'foo'

v.s.

#!/usr/bin/php
<?php
echo 'foo'

输出是foo

请记住,没有“php 脚本”之类的东西。只有文件中包含&lt;?php ... ?&gt; PHP 代码块。如果没有 &lt;?php 来启用 PHP 模式,文件的内容将被简单地视为普通输出。

【讨论】:

  • 脚本的第二行是“”。这不是问题。
【解决方案2】:

我刚读到这条评论:

我建议使用“#!/usr/bin/env php”而不是硬编码 php 的路径,因为这允许 php 二进制文件位于 用户的 PATH。

在这个页面上:http://blog.digitalstruct.com/2007/04/24/tips-and-tricks-php-shell-scripts/

也许这会解决您的问题。

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 2021-03-07
    • 2015-07-04
    • 1970-01-01
    • 2021-06-04
    • 2011-07-27
    • 2019-07-23
    • 1970-01-01
    相关资源
    最近更新 更多