Symfony Console - 未定义的常量STDIN。

4

我最近把我的Symfony项目上传到了我的Web托管服务中。当我使用控制台时,每当我应该输入一些内容时,我会收到以下错误信息:

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。 - SirDerpington
是的,只列出了可选建议。其他所有内容也都能正常运行(路由、数据库连接)。不需要任何额外输入的控制台命令也都可以正常工作。 - marius2k12
你是如何调用控制台脚本的?是通过浏览器还是命令行?如果是后者,使用的是 php 还是 php-cgi - igorw
我正在通过使用php在命令行上调用它。我认为php-cgi没有安装,而且我没有权限安装它。 - marius2k12
1个回答

3
只需添加:

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"));
...

3
改变框架文件似乎不是一个好主意。你是否可以在自己的文件中定义 STDIN,而不是更改框架文件? - Luke
2
对于类似的问题,我已经在AppKarnel中定义了这些常量。因为它将被加载到Web和控制台中。它起作用了 :) - Anis
你绝对不应该修改 vendor/ 目录中的任何内容 - 它会在下一次更新时被删除,并且通常不会提交到版本控制中。相反,应该将此代码放置在你的 bin/consolepublic/index.php 文件中。 - Moritz Friedrich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接