如何在 PHP 中覆盖 register_argc_argv?

Posted

技术标签:

【中文标题】如何在 PHP 中覆盖 register_argc_argv?【英文标题】:How to override register_argc_argv in PHP? 【发布时间】:2012-07-12 16:23:19 【问题描述】:

我正在使用共享主机 (fasthostingdirect),出于某种原因,他们默认关闭了此标志。这意味着我无法访问 php 命令行参数...除非我在 php.exe 之后使用 -n (= --no-php-info) 标志。

在我的 php 文件中尝试过ini_set('register_argc_argv', 1),但没有效果。我猜这是由于托管服务提供商的限制性质,但是他们并没有停止 -n 选项 - 虽然不确定使用它的其他含义。谁有更好的建议?

【问题讨论】:

只是移动主机。尝试覆盖他们的设置是开始的好方法。 【参考方案1】:

无需创建全新的ini文件,只需使用-d标志

php -d register_argc_argv=1 myscript.php

【讨论】:

哇这成功了!!我试图从 crontab 运行一个 php 文件,但无法获取 url 参数,但这有效!非常感谢。【参考方案2】:

ini_set('register_argc_argv', 1) 不起作用,因为在执行代码时,它们已经注册(或未注册)。

看来你可以直接运行php,所以复制你自己的php.ini文件并传递它:

php -c yourphp.ini

【讨论】:

以上是关于如何在 PHP 中覆盖 register_argc_argv?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 gitlab.com 上的 PHP 项目的作业列表中启用代码覆盖率输出

如何在 PHP 中为 PDF 文件添加覆盖/图章?

PHP 中如何在同一个文件中写入而不覆盖以前写的内容

在 PHP (linux) 中覆盖文件/函数

如何使用 PHP 扩展覆盖内部 Zend 函数?

如何在测试代码时完全覆盖条件(例如 PHP 和 xdebug)