【问题标题】:PHP not reading command line paramsPHP不读取命令行参数
【发布时间】:2023-04-01 11:30:01
【问题描述】:

我创建了一个小脚本,用于从某些链接“清理”站点地图文件。我想我以前使用它没有问题,但现在由于一个奇怪的错误无法使用它 - 根本没有读取命令行参数。

我可能看错了地方,但我用谷歌搜索了一下,我得到的只是我已经实现的用法。

请检查以下代码sn-p:

 if(count($argv) != 4) {
            echo "\n\nUSAGE: php cleanSitemap.php <input file> <output file> <bad str>\n"
                    ."This script parses <input file>, skipping all the sitemap XML elements containing <bad str>,\n"
                    ."writting only 'good' XML elements into sitemap.\n"
                    ."Sample: php cleanSitemap.php sitemap.xml sitemap_clean.xml protect-x\n"
                    ."\n";
            echo "You entered " . count($argv) . " parameters.\n";
            exit();
    }

你怎么看,问题出在哪里???

编辑: 为了简单起见,我创建了 test.php,内容如下:

<?php
        echo count($argv) ."\n";
        print_r($argv);
        echo "\n";
?>

-bash-3.2$ /web/cgi-bin/php5 test.php 1 2 3 45

内容类型:文本/html

0

好吧...在写这篇文章时,我想我可能想到了一些事情:这是 Godaddy 共享主机上使用的 php5 客户端。也许它以某种方式设置为不通过命令行使用?或者,如果使用,它不接受命令行参数。

【问题讨论】:

  • 你能告诉我们你在命令行中输入了什么吗?
  • 你能把print_r($argv);的结果贴出来吗?
  • 你怎么称呼那个程序? var_dump($argv) 告诉你什么?
  • 之前是什么?你知道$argc 包含与count($argv) 相同的值(参数的数量)吗?
  • 也许您可以检查错误日志文件以查看是否有问题或检查 PHP.ini 配置

标签: php command-line-arguments


【解决方案1】:

噢噢噢噢噢……好吧,我完全是个菜鸟。

我刚刚发现这个问题确实与使用了不正确的 php 二进制文件有关...也就是说,可以在/usr/local/php5/bin/php 中找到“正确”的那个。

对于这个错误,我真的很抱歉。

【讨论】:

  • 刚刚遇到了同样的问题。你的回答帮助了我。谢谢!
  • 总是喜欢听到我的 scre*ups 帮助其他人 ;)
  • 我也是...好吧,在go daddy的一些文档页面上,据说使用其他/web/cgi-bin/php版本...所以谢谢你比go更有用爸爸的暗示!!
  • 请确保你不要忘记这是一个很老的帖子,我的朋友 :)。谁知道他们改变了什么!