【问题标题】:Symfony Console - Undefined constant STDINSymfony 控制台 - 未定义的常量 STDIN
【发布时间】:2013-05-01 10:39:03
【问题描述】:

我最近将我的 symfony 项目上传到我的虚拟主机。使用控制台时,每当我应该输入一些输入时,我都会收到以下错误。

Notice: Use of undefined constant STDIN - assumed 'STDIN' in 
/htdocs/symfony/vendor/symfony/symfony/src/Symfony/Component/Console/Helper/DialogHelper.php line 80

给出错误的文件在这里:

https://github.com/symfony/Console/blob/master/Helper/DialogHelper.php

第 103 行

我认为我的 php 配置有些错误。但是我无法完全控制服务器及其设置。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 可以访问 Symfony 的 config.php 吗?它显示了使用 Symfony 需要解决的建议和错误。
  • 是的,仅列出可选建议。其他一切也都在工作(路由、数据库连接)。不需要任何额外输入的控制台命令也可以正常工作
  • 如何调用控制台脚本?通过浏览器?还是在命令行上?在后一种情况下,phpphp-cgi?
  • 我使用 php 在命令行上调用它。我不认为 php-cgi 已安装,我没有安装它的权限

标签: php symfony


【解决方案1】:

只需添加:

define('STDIN',fopen("php://stdin","r"));

在 /vendor/symfony/symfony/src/Symfony/Component/Console/Helper/DialogHelper.php 的顶部

    <?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Console\Helper;

use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Formatter\OutputFormatterStyle;

define('STDIN',fopen("php://stdin","r"));
...

【讨论】:

  • 更改框架文件听起来是个坏主意。您可以不在自己的文件中定义 STDIN 吗?
  • 对于类似的问题,我已经在 AppKarnel 中定义了这些常量。因为它将同时为 Web 和控制台加载。它工作:)
  • 您应该永远修改vendor/ 目录中的任何内容 - 它将在下次更新时被删除,并且通常不会提交到版本控制中。将此代码放在您的 bin/consolepublic/index.php 文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2012-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
相关资源
最近更新 更多