【问题标题】:PHP CLI - something like $PATHPHP CLI - 类似于 $PATH
【发布时间】:2011-11-07 14:24:33
【问题描述】:

我想问你是否有类似 UNIX $PATH for PHP CLI 的东西。

例如,我想使用

php a2addvhost.php example.com

而不是

php /usr/share/php/a2addvhost.php example.com

我尝试更改 include_path 和 $PATH,但都可以。

【问题讨论】:

    标签: path filepath php


    【解决方案1】:

    第一个参数必须是准确的路径名。但是,您可以创建一个启动脚本(以 root 身份):

    $ echo -e '#!/bin/sh\nexec php /usr/share/php/a2addvhost.php "$@"\n' \
       > /usr/bin/a2addvhost
    $ # And then start with ...
    $ a2addvhost example.com
    

    或者,通过将a2addvhost.php 预先添加如下使其可执行:

    #!/usr/bin/env php
    <?php
    /* php code goes here */
    

    并使其可执行:

    $ chmod a+x /usr/share/php/a2addvhost.php
    

    现在,如果 PATH 包含 /usr/share/php/,您可以使用启动脚本

    $ /usr/share/php/a2addvhost.php example.com
    

    【讨论】:

    • 感谢您的回答,请查看 Maerlyn 帖子下的评论
    • @GRoNGoR 如果这不是微不足道的,您可能应该就此提出一个新问题。我的第一个解决方案(行前)不需要修改 PATH,你只需将一个新文件写入/usr/bin(或/usr/local/bin)。另请注意,您必须在此之后 export PATH 才能生效,如果您仍然要做同样的事情,那么在 root 和非 root 之间做出决定是没有意义的。
    • 我不明白你的解决方案的第一行......我需要为每个我想这样执行的文件使用它,对吧? (如果是,那么我不想使用它)......是的,我知道我必须导出 PATH - 我只是编辑了 /etc/profile 所以它应该可以工作,但它没有......我要为此创建一个新问题
    • 你不需要使用它,但它使使用更舒适。
    【解决方案2】:

    /usr/share/php/ 添加到您的PATH,为其提供可执行标志,然后简单地运行

    a2addvhost.php example.com
    

    您可能需要在文件开头添加 shebang。

    【讨论】:

    • 感谢您的回答。我现在在更改 $PATH 时遇到问题……这就是我在 /etc/profile 中的内容: if [ "id -u" -eq 0 ];然后 PATH=".....:/usr/share/php" else PATH=".....:/usr/share/php" fi export PATH 但这仅适用于普通用户,不适用于 root(它在某处被覆盖?)...顺便说一下,我使用 Debian。
    • 我检查了它,它只是充满了注释行 - 没有什么可以改变 $PATH
    【解决方案3】:

    如果你在做

    php a2addvhost.php example.com
    

    你还在 Unix 中。所以a2addvhost.php 文件必须在当前目录中才能工作。

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 2012-07-20
      • 2012-12-11
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2013-10-10
      • 2011-11-23
      相关资源
      最近更新 更多