当前位置: 首页 > 知识库问答 >
问题:

使用未定义常数STDIN-在C:\wamp\www\study\sayHello中假设为“STDIN”。php第5行

季华茂
2023-03-14

我想学习php

我在win8 64位机器上安装了Wampserver2.4。

服务器配置

Apache版本:2.4.4
PHP版本:5.4.12

在第一课中,我遇到了这个错误:(

Notice: Use of undefined constant STDIN - assumed 'STDIN' in C:\wamp\www\study\sayHello.php on line 5

这是文件“sayHello.php”中的php代码

<?php

echo "Hello there. So I hear you're learning to be a PHP programmer!\n";
echo "Why don't you type in your name for me:\n";
$name = trim(fgets(STDIN));

echo "\nThanks, " . $name . ", it's really nice to meet you.\n\n";

?>

共有3个答案

游鸣
2023-03-14

当您试图使用

Artisan::调用(“迁移”);

似乎是时候产生这些类型的错误了。为了解决这个问题,您可以简单地将代码替换为

Artisan::调用('migrate',['--force'=

如果正在生产,请确保使用--force标志。

荣晨朗
2023-03-14

只有CLI(命令行)SAPI定义输入/输出常量,例如STDIN、STDOUT和STDERR,纯粹是为了方便该环境。

如其他答案所述,您可以在PHP代码中简单地定义这些常量。您还可以选中defined(),以避免通过CLI调用时出错。例如:

<?php

if (!defined('STDIN')) {
  define('STDIN', fopen('php://stdin', 'r'));
}

但是,请记住,php://stdin在非CLI SAPI(如Apache或FPM)中可能无法按预期方式工作。例如,要在通过FPM执行时访问原始POST主体,可以使用php://input

PHP有许多不同的SAPI(服务器应用程序编程接口),允许您在各种环境中执行PHP代码,例如Web服务器、电子邮件服务器或命令行(CLI)。示例包括:

  • CGI
  • FPM
  • Milter(电子邮件过滤器
  • 阿帕奇

每个SAPI的初始条件和行为可能略有不同。CLI SAPI和其他SAPI之间的一些其他差异包括:

  • header()无效
  • 一些ini设置,例如html\U错误和输出缓冲,具有不同的默认值(更适合CLI)
  • 不会将当前工作目录(CWD)更改为您执行的脚本
段干庆
2023-03-14

只需在文件顶部定义STDIN常量,

define('STDIN',fopen("php://stdin","r"));
 类似资料:
  • 问题内容: 我有以下程序: 我面临的问题是,一旦在STDIN上检测到输入,消息“ User input- stdin”就继续打印…为什么在循环检查哪一个描述符已输入的同时,它一次又不打印一次? 谢谢。 问题答案: 该功能仅在有可用输入时告诉您。如果您实际上并没有消耗它,那么select将继续直接下降。

  • stdin 设备文件 这里的stdin设备文件实际上就是指的键盘。这个设备文件是一个只读设备,如果写这个设备,就会出错。接下来我们看看stdin设备的相关处理过程。 初始化 stdin设备文件的初始化过程主要由stdin_device_init完成了主要的初始化工作,具体实现如下: static void stdin_device_init(struct device *dev) { de

  • 问题内容: 我正在制作一个C ++共享库,当我编译使用该库的主exe时,编译器会给出以下信息: 库代码: fooclass.h fooclass.cpp 编译: 主要:main.cpp 编译: 该机器是Ubuntu Linux 12 谢谢! 问题答案: 是问题。最新版本的GCC要求您按照相互依赖的顺序放置目标文件和库-因此,根据经验法则,必须将库标志作为链接器的最后一个开关;即写 代替。

  • 问题内容: 我试图重定向java中子进程的stdin和stdout,最终我将把输出转到JTextArea或其他东西。 这是我当前的代码, 输出如下所示: 我期望看到输出“ Hello World”字符串。也许是因为父进程的存活时间不够长? 我还希望能够发送和接收多个命令。 问题答案: 在尝试侦听输入流之前,您已经尝试写入输出流,因此您什么也没看到是有道理的。为使此成功,您将需要对两个流使用单独的线

  • 如何使用fifo重定向进程的stdin? 使用system d,我正在启动一个不经常需要通过stdin发送命令的服务。为了克服这个问题,我尝试了以下方法: 我可以使用以下命令运行命令。 我遇到的问题是,这似乎只适用于一个命令。在运行这个命令一次之后,所有其他写入fifo的调用似乎都被挂起,服务器再也不会处理其他任何事情。 如何使用fifo将输入重定向到守护进程的stdin?

  • 问题内容: 有没有办法检查输入流()是否有数据? 从GO的初始stdin中读取帖子?显示了如何读取数据,但是不幸的是,如果没有数据通过管道传送到stdin中,则会阻塞。 问题答案: os.Stdin与其他任何“文件”一样,因此您可以检查其大小: 我将其构建为“管道”可执行文件,其工作方式如下: