it-swarm.com.de

Codeigniter zeigt eine leere Seite anstelle von Fehlermeldungen an

Ich verwende Codeigniter und anstelle von Fehlermeldungen bekomme ich nur eine leere Seite. Gibt es eine Möglichkeit, stattdessen PHP -Fehlermeldungen anzuzeigen? Es ist sehr schwer zu debuggen, wenn ich keine Rückmeldung bekomme.

Meine Umgebung ist Ubuntu mit Apache. 

37
FlyingCat

Da bisher keine der Lösungen für Sie zu funktionieren scheint, probieren Sie diese aus:

ini_set('display_errors', 1);

http://www.php.net/manual/de/errorfunc.configuration.php#ini.display-errors

Dies weist PHP explizit an, display die Fehler anzuzeigen. In einigen Umgebungen kann dies standardmäßig deaktiviert sein.

So sehen meine Umgebungseinstellungen in index.php aus:

/*
 *---------------------------------------------------------------
 * APPLICATION ENVIRONMENT
 *---------------------------------------------------------------
 */
define('ENVIRONMENT', 'development');
/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 */
if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            // Report all errors
            error_reporting(E_ALL);

            // Display errors in output
            ini_set('display_errors', 1);
        break;

        case 'testing':
        case 'production':
            // Report all errors except E_NOTICE
            // This is the default value set in php.ini
            error_reporting(E_ALL ^ E_NOTICE);

            // Don't display errors (they can still be logged)
            ini_set('display_errors', 0);
        break;

        default:
            exit('The application environment is not set correctly.');
    }
}
88
Wesley Murch

Stellen Sie sicher, dass php5-mysql installiert ist.

28

Ich hatte das gleiche Problem und wie Shayan Husaini darauf hinwies, hatte ich einen nicht erkannten Syntaxfehler.

Ich habe es mit dem PHP-Interpreter im Terminal gelöst:

php -l file.php

Sie können auch so etwas verwenden, um den Linter in jeder Datei in einem Ordner zu verwenden:

find -type f -name "*.php" -exec php -l '{}' \;

Und nur diejenigen mit Fehlern filtern:

find -type f -name "*.php" -exec php -l '{}' \; | grep '^[^N]'

Das sollte Dateien mit Analysefehlern und der Zeile anzeigen, in der der Fehler ist.

8
archemiro

Dieses Verhalten tritt auf, wenn in Ihrem Code ein grundlegender PHP-Syntaxfehler vorliegt. Falls Sie Syntaxfehler haben, analysiert der PHP-Parser den Code nicht vollständig und zeigt nichts an, sodass alle oben genannten Vorschläge nur dann funktionieren, wenn Sie andere als Syntaxfehler haben.

7
Code Prank

sie können es in der main index.php einstellen 

    define('ENVIRONMENT', 'development');
/*
 *---------------------------------------------------------------
 * ERROR REPORTING
 *---------------------------------------------------------------
 *
 * Different environments will require different levels of error reporting.
 * By default development will show errors but testing and live will hide them.
 */

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
        break;

    case 'testing':
    case 'production':
        error_reporting(0);
    break;

    default:
        exit('The application environment is not set correctly.');
}
}
6

Das passiert mir immer dann, wenn ich Sachen in autoload.php wie die 'Datenbank' automatisch lade.

Um dieses Problem zu beheben, verwenden Sie ein Windows-Betriebssystem 

  1. Öffnen Sie Ihre php.ini. Diese Zeile suchen und auskommentieren - extension=php_mysql.dll

    (Bitte überprüfen Sie auch, ob die Direktive PHP darauf verweist, wo sich Ihre Erweiterungen befinden. 
    Meins ist extension_dir = "C:\php-5.4.8-Win32-VC9-x86\ext")

  2. Starten Sie Apache neu und aktualisieren Sie Ihre Seite

5
user1414182

Ich hatte vor ein paar Tagen das gleiche Problem. Meine Entwicklungsumgebung ist Win8 und die Website funktionierte einwandfrei, aber als ich die Dateien auf den Produktionsserver (Linux) hochgeladen hatte, wurde eine leere Seite angezeigt.

Stellt sich heraus, dass Modelle und Controller-Dateinamen mit einem Großbuchstaben beginnen sollen .

Die Datei muss als "Blog.php" bezeichnet werden, mit einem Großbuchstaben "B".

Klassennamen müssen mit einem Großbuchstaben beginnen.

In Windows-Umgebungen spielt dies keine Rolle, da windows nicht zwischen Groß- und Kleinbuchstaben unterscheidet , aber in Linux-Umgebungen werden die Dateien nicht angezeigt.

Hoffe ich habe geholfen.

4
João Monteiro

Stellen Sie sicher, dass sich keine leere index.html-Datei in Ihrem Stammordner befindet. Es passiert :)

3
Rafik Bari

Versuchen Sie, dies zu Ihrer index.php-Datei hinzuzufügen

error_reporting(E_ALL);
3
brenjt

Wenn Sie CI 2.0 oder neuer verwenden, können Sie ENVIRONMENT in index.php in define('ENVIRONMENT', 'testing'); eingeben.
Alternativ können Sie php_flag display_errors on zu Ihrer .htaccess-Datei hinzufügen.

2

Zunächst müssen Sie die Erlaubnis für Ihren Codeigniter-Ordner erteilen. Möglicherweise liegt das Berechtigungsproblem vor, und starten Sie den Server.

2
Anand Mishra

prüfen Sie, ob error_reporting auf dem Server auf ON steht oder nicht. Wenn diese ID deaktiviert ist, erhalten Sie keine Fehler und nur eine leere Seite. Wenn Sie sich auf einem gemeinsam genutzten Server befinden, können Sie die Fehlerberichterstattung über htaccess aktivieren. Fügen Sie in codeIgniter Folgendes in Ihrem htaccess hinzu

php_flag display_errors On

und setzen

error_reporting(E_ERROR); ## or what ever setting desired in php

ich hoffe, es wird für Sie funktionieren

2
Junaid

nach der Installation von xamp/wamp können Sie einige Fehler ähnlicher Art feststellen. Wenn Ihre Website bereits ausgeführt wurde, besteht kein Problem mit der Konfiguration.

1) Überprüfen Sie die Datenbankverbindungen in der Datei "database.php" im Anwendungsordner 2) Prüfen Sie die Datei "Config.php". Überprüfen Sie, ob die URL korrekt ist oder nicht? 3) Standardmäßig sind kurze Tags in neuen Installationen deaktiviert

in php.ini-Datei ändern Sie "short_open_tag = Off" in "short_open_tag = On"

Stellen Sie sicher, dass Sie Apache danach neu starten.

hoffe das hilft.

0
UMAR

ich hatte auch das gleiche Problem und habe fast alle Dinge ausprobiert, aber schließlich habe ich meinen Server neu gestartet und ich fand alles gut PHP CODE hat keinen Fehler ausgegeben.

0
Sachin

Wenn Sie dies in Ihrer php.ini haben:

display_error = On;

und Sie haben dies gleichzeitig in Ihrer CI-Anwendung

error_reporting(0);

sie erhalten HTTP/1.1 200 OK und eine vollständige Bankseite.

Das liegt daran, dass php-fpm, wenn display_error eingeschaltet ist, immer den HTTP-Code 200 ..__ zurückgibt.

Für die CI-Anwendung richtet der Eintrag index.php die laufende Umgebung als Faltenbalg ein:

if(isset($_SERVER['SERVER_ENV'])) {
    define('ENVIRONMENT', $_SERVER['SERVER_ENV']);
} else {
    define('ENVIRONMENT', 'development');
}

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
            ini_set('display_errors', 1);
        break;

        case 'testing':
        case 'production':
            error_reporting(0);
        break;

        default:
            exit('The application environment is not set correctly.');
    }
}

Kurz gesagt, wenn Sie die ENV-Direktive im conf Ihres Webservers festlegen, sagen Sie fastcgi_params von Nginx:

fastcgi_param  SERVER_ENV         production;

dann wird CI automatisch eingestellt

error_reporting(0);
0
Codefor

Verwenden Sie das @ -Zeichen überall?

Wenn Sie etwas haben wie:

@include('page_with_error.php');

Sie erhalten eine leere Seite.

0
Keith Ritter

laden Sie Ihren URL-Helfer, wenn Sie eine Funktion erstelleneg,

visibility function_name () {

     $this->load->helper('url');
}

daraufhin werden Fehler oder eine geladene Ansicht angezeigt.

0
BK004

Eine andere Methode besteht darin, zu überprüfen, ob Sie die Fehlerprüfung in Ihrem Code versehentlich überschritten haben. Durchsuchen Sie Ihren gesamten Code nach einer Instanz von error_reporting (). Wenn Sie es ohne Parameter aufrufen, wird nur die aktuelle Stufe zurückgegeben und ist ungefährlich. Wenn Sie mit einen Parameter wie 0 (Null) aufrufen, wird die Fehlerberichterstattung deaktiviert.

Sie können dies in CodeIgnitor testen, indem Sie in der Kernbibliothek unter ../system/core/Common.php nachsehen und einen Abschnitt finden, der sich in Zeile 615 befindet.

if (($severity & error_reporting()) !== $severity)
{
   return;
} 

Etwas hinzufügen wie:

if (($severity & error_reporting()) !== $severity)
{
   echo "Suppressing errors!";
   return;
} 

und Sie sollten in der Lage sein, für überholte Fehler einzufangen und von dort aus zu debuggen.

0
Dave Strickler

Ich hatte dasselbe Problem, ich installierte die neueste xamp-Version und stellte fest, dass meine Website nicht funktioniert. Nach Recherchen und Zeitverschwendung fand ich das.

Ich muss folgendes Tag in der php.ini-Datei einschalten short_open_tag = On

Stellen Sie sicher, dass Sie Apache danach neu starten.

Ich hoffe, das hilft, die meisten dieser Probleme stehen im Zusammenhang mit der php.ini-Datei oder der Neuinstallation, wenn Ihre Site bereits als andere Personen ausgeführt wurde, die ein ähnliches Problem hatten.

0
UMAR

In meinem Fall trat der Fehler auf, weil mein Apache-Server so konfiguriert war, dass er PHP als Fast CGI ausgeführt hat. Ich habe ihn in FPM geändert, und er hat funktioniert.

0
Jhonny

Wenn Codeigniter nichts anzeigt, liegt häufig ein Syntaxfehler vor. Meistens, wenn die App zuvor nahtlos ausgeführt wurde, schauen Sie sich Ihre letzten Änderungen an. Für mich war diesmal die gesamte App, nicht nur eine Seite. Also machte ich einen schnellen Gehirn-Scan für die letzten Bearbeitungen, die ich gemacht hatte, und arbeitete rückwärts, um alle Dateien zu überprüfen, an denen ich an diesem Tag gearbeitet hatte. Es stellte sich heraus, dass es zwei "wo" -Klauseln in zwei Modelldateien gibt 

$this->db->where('Type' => 'Blog'); rather than $this->db->where('Type', 'Blog');
0
Ojchris

Codeigniter scheint keine Fehlermeldung zu geben, wenn ich auf eine Ansicht verweise, die nicht vorhanden war.

In meinem Beispiel hatte ich in meinem Controller:

$this->load->view('/admin/index/access_controls/groups/add');

Da die Datei nicht vorhanden war, wurde eine leere Seite "Es ist ein Fehler aufgetreten" angezeigt. Ich habe den Code geändert in:

$this->load->view('/admin/access_controls/groups/add');

Auf diese Weise habe ich das gleiche Problem gelöst, das Sie scheinbar haben.

0
evade

Ich bin darauf gestoßen, weil ich eine CLI als Rootbenutzer über cron hatte und so Protokolldateien mit root: root erstellte. Wenn Sie versucht haben, zu einem URI zu navigieren, würde alles gut funktionieren, aber CI zeigte die leere Seite, wahrscheinlich, weil sie keine Schreibberechtigung für die Protokolldatei hatte.

0