【发布时间】:2015-10-12 12:32:25
【问题描述】:
我在 Centos 6 上运行 PHP 版本 5.5.24。http://php.net/manual/en/wrappers.php.php 似乎暗示我应该使用已定义的常量 STDIN,但是,如使用 Apache 执行时所示,它没有定义。
<?php
$input = fgets(STDIN);
注意:使用未定义的常量 STDIN - 在 /var/www/bidjunction/html/stdin.php 在第 2 行
警告:fgets() 期望参数 1 是资源,字符串在 /var/www/bidjunction/html/stdin.php 在第 2 行
编辑。它是从 CLI 定义的。让我更新一下标题。
[Michael@devserver ~]$ php -r 'echo(STDIN);'
Resource id #1
[Michael@devserver ~]$
【问题讨论】:
-
stdin是一个文件句柄,而不是一个常量。你可以在 fread/fwrite 类型的操作中使用它,但它不是你可以在 echo/print 中使用的东西。这不是传统的define()'d 常量。 -
@MarcB
$input = fgets(STDIN);也会导致未定义的错误。另外,请参阅我编辑过的关于 CLI 的帖子。 -
stdin/stdout 通常也只能在 CLI php 中使用。
-
你提到了 Apache。你是通过
php-fpm提供php 服务还是使用那个超级垃圾mod_php? -
@N.B.大概是后者。我该如何检查?