我希望我在正确的 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 的奇怪行为!