在 php.ini 中启用额外扩展时,PHP 脚本无法读取 CLI 参数

在 php.ini 中启用额外扩展时,PHP 脚本无法读取 CLI 参数

我希望我在正确的 StackExchange 上发帖。

我在使用 PHP CLI 时遇到了一个非常奇怪的问题。我正在使用 Symfony 框架,当我在/etc/php5/cli/php.ini.

比长篇大论更好,看这个:


1/ 正常输出,无扩展

app/console doctrine:schema:update

Nothing to update - your database is already in sync with the current entity metadata.

→ 好的 注意:app/console 是一个带有 shellbang 的 PHP 脚本

app/console doctrine:schema:update --force

Nothing to update - your database is already in sync with the current entity metadata.

→ 好的--force是一个 Symfony 选项,它由 PHP 传递给脚本)


2/ 向 PHP 添加两个扩展

我编辑 php.ini sudo vim /etc/php5/cli/php.ini,.我添加两行:

extension=cairo.so
extension=php_gtk2.so

这些扩展运行完美。没有警告,没有错误。


3/ PHP“崩溃”,刚刚添加了两个不相关的扩展

app/console doctrine:schema:update

Nothing to update - your database is already in sync with the current entity metadata.

→ 好的... 但:

app/console doctrine:schema:update --force

PHP Fatal error:  Option inconnue --force in Unknown on line 0
Could not startup.

→ 什么?不是 Symfony 的错误... 注意:仅表示法语中的Option inconnue意思。Unknown option

对其他命令、Symfony 命令或独立 PHP 脚本具有相同的效果。


结论:PHP 现在有一种奇怪的方式来将选项传递给被调用的 PHP 脚本。

我也放在php前面,app/console但它没有改变任何东西。如果我评论或删除 php.ini 中的扩展,一切正常。只涉及到这两行。

编辑:刚刚将 PHP 从 5.5.12 升级到 5.6.3,同样的问题。

答案1

我在 Linux 上运行 PHP 5.6.1 (cli),当我尝试使用 drush 时遇到了完全相同的问题。每次我运行 PHP cli 脚本时都会收到:

PHP 致命错误:未知选项 --whatever-option-you-have

为了确保我自己创建了一个简单的脚本:

#!/usr/bin/env php
<?php
echo ("Test");

当我从 php.ini 中删除“php_gtk2.so”时,错误就消失了。

这种情况只发生在 php_gtk2.so 或您放置的任何扩展名中吗?如果你只留下 cairo.so,你会得到同样的错误吗?

这真是 PHP 的奇怪行为!

相关内容