【问题标题】:PHP error reporting is of, but neither if and else check worksPHP错误报告是,但if和else检查都不起作用
【发布时间】:2013-12-13 04:19:29
【问题描述】:

所以,问题是:

在 php.ini 文件中没有启用错误报告,但是当我开发一些东西时,我使用简单的 if 和 else 检查。但由于我什至无法完全设置一些会话,所以我归结为基础,并写道:

<?php

if (require_once('classes/sessionHandler.class.php')) {
    echo "file found";
}else{
    echo "file not found";
}

我收到消息:

找到文件

比我写的:

<?php

if (require_once('abc')) {
    echo "file found";
}else{
    echo "file not found";
}

我什么也没得到,甚至没有找到文件的消息。

php 设置应该有什么问题?

PHP版本:

PHP 版本 5.4.4-14+deb7u5

操作系统:

卡利 linux 1.0.5

【问题讨论】:

    标签: php error-reporting


    【解决方案1】:

    这是因为require_once 在执行脚本时抛出了一个致命错误,从而停止了其余的执行。您需要改用include_oncefile_exists 函数。

    $file = 'abc';
    
    if(file_exists($file)) {
        require_once($file);
    } else {
        echo 'File not found';
    }
    

    开发时最好将error_reporting设置为on。从而设置ini_set('display_errors', true)

    【讨论】:

    • 甚至比 file_exists()“更好”的是 is_readable()。不是因为文件存在才有权读取它。 is_readable() 确认了两者。
    • 我将您的答案设置为最好的,因为这就是我之前的做法。但是因为我很久没有写 php 我忘记了,现在你记得我了!谢谢。
    • Stixx,在 :/ 10 分钟后写下相同的答案不太礼貌。我同意 Blizz 的观点,is_readable 会是一个更好的答案
    • @Asenar,你知道我们正在写有利于提问者的答案,尽管可能存在人们同时写相同答案的情况。所以请不要怪我没有打赏,只写有用的cmets。
    【解决方案2】:

    如果你想允许丢失文件,你必须使用 include_once('file'); ,这会产生一个警告说文件丢失,但这不会停止脚本。

    或者,您可以按以下方式检查文件是否存在:

    <?php
    
    $file = 'abc';
    if (file_exists($file)) {
      echo "file found";
      require_once($file);
    }else{
      echo "file not found";
    }
    

    【讨论】:

      【解决方案3】:

      require 或 require_once 通常在找不到文件或无法读取文件时出现致命错误。在您的情况下,只需打开错误输出,您就会看到您的问题。

      【讨论】:

        【解决方案4】:

        require_once() 如果找到文件,则总是返回 1,如果找不到文件,则停止执行并出现致命错误。因此,您看不到错误输出 - 您的脚本已死。

        请改用include_once

        【讨论】:

        • 我不知道怎么做,但你是对的。因为 if(require_once 'file') 与 if(true) || 相同if(false) 它不能为真值和假值杀死脚本。我应该怎么做才能解决这个问题?有什么想法吗?
        • 哦,是的,对不起,我明白了……我离开 php 大约一年了……但我明白了我做错了什么……应该改用 file_exists。
        • require 和 include 实际上并不总是返回 1。如果您自己不返回某些内容,它们只会返回该值。做一个“return FALSE”是完全可以的;然后 if (include(...)) 仍然会“失败”。这只是不常见的做法:)
        【解决方案5】:

        require(_once) 如果找不到文件,则会生成致命错误。如果您总是想要输出,请尝试使用 include(_once)。

        【讨论】:

        • 我又得到了没有内容的空白页
        猜你喜欢
        • 2012-04-23
        • 2012-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多