Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要_once()或die()不工作_Php - Fatal编程技术网

Php 需要_once()或die()不工作

Php 需要_once()或die()不工作,php,Php,有人知道为什么我的孩子需要一次或死吗;它不起作用。它总是显示致命错误,而不是我在die()中输入的错误消息。请参阅下面的代码: require_once ('abc.php') or die("oops"); 错误消息显示如下 “致命错误:控制器::require_once()[function.require]:打开所需的“1”失败(包括_路径=”…” 我输入的不是消息(“oops”),而是。或具有比require/require\u更高的优先级。因此php计算 ('abc.php') or

有人知道为什么我的孩子需要一次或死吗;它不起作用。它总是显示致命错误,而不是我在die()中输入的错误消息。请参阅下面的代码:

require_once ('abc.php') or die("oops");
错误消息显示如下

“致命错误:控制器::require_once()[function.require]:打开所需的“1”失败(包括_路径=”…”

我输入的不是消息(“oops”),而是。

或具有比require/require\u更高的优先级。因此php计算

('abc.php') or die("oops")
在将结果传递给require_一次之前,Or接受两个布尔操作数。('abc.php')的计算结果为true,因此整个表达式为true,并且

调用。require\u once获取一个字符串,bool(true)->string=>1=>打开所需的“1”失败您不需要或死在那里(…)。如果无法读取文件,require\u once将停止php实例。

由于是一种特殊的语言构造,而不是函数,因此不需要对参数列表进行解析:

因为
include()
是一种特殊的语言构造,所以它的参数周围不需要括号。比较返回值时要小心

事实上,它只有一个参数,将其括在附加括号中不会改变任何内容:

一,≡ (1) ≡ ((1)) ≡ (((1))) ≡ …

因此,您的声明与此相同(paremter刚刚包装):

因此,我们有一个布尔表达式作为参数,它要么为真,要么为假。这些值的字符串分别相当于
“1”

var_dump((string) true === "1");
var_dump((string) false === "");
这就是获取此失败的打开所需“1”错误消息的原因

但在正确的位置使用括号,如下图所示,可以使其正常工作:

(@include_once 'abc.php') or die("oops");
这里,
'abc.php'
显然是参数,对
include\u once
的返回值执行与
die(“oops”)
的析取。如果文件不存在,只需忽略错误消息
includ\u once

PS:也是一种特殊的语言结构,其工作方式与此相同。

在评估时:

require_once ('abc.php') or die("oops");
出于某种原因,PHP首先计算“或死”(“oops”)”。 要强制PHP评估“require_once('abc.PHP'),请在括号中加上它

(require_once ('abc.php')) OR die("oops");
但是,如果“require”失败,PHP将停止处理,因此改用“include”(请参阅)。此外,include_之前的@symbol会压制来自MySQL的错误消息,因此只输出“oops”

(@include_once ('abc.php')) OR die("oops");
一切正常


来源:我自己的沮丧和

精彩的回答。需要强调的是,require_once不是一个函数。它是一元运算符(或语言构造,如果你愿意),echo、new、include等也是。谢谢!添加
die()有点糟糕
以一种似乎可以接受的方式,它抛出了一个错误,看起来像是找不到文件和/或需要它-或-包含文件中的错误…当它真的是坏代码时,
require()或die()
include或die也是我使用的。当您需要澄清文件丢失的原因时,它会很有帮助(例如,需要定义的配置文件)将@放在包含之前可能是个坏主意。@include会导致包含文件中的所有错误以及该文件包含的任何文件被抑制,从而使疑难解答和错误处理成为一场噩梦。
(require_once ('abc.php')) OR die("oops");
(@include_once ('abc.php')) OR die("oops");