2012-04-10 9 views
31

Tak naprawdę nie mam żadnych błędów na mojej obecnej stronie, ale chcę być w stanie zobaczyć błąd, kiedy pojawiają się, zamiast tego strony błędu HTTP 500. Przeszukałem trochę i pomyślałem, że dodanie tych dwóch linii naprawiłoby wszystko.Jak uzyskać błędy wyświetlania PHP? (Dodałem ini_set i error_reporting, ale po prostu daje 500 na błędy)

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

UWAGA: Nie mam dostępu do pliku php.ini, ponieważ korzystam z serwera konta szkolnego.

Więc wprowadzony błąd (bez średnika po $ buggy), jak to na szczycie mojej stronie:

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 
$buggy 

$x = 4 + 2; 
... 

Jednak ja po prostu błąd serwera:

„Witryna napotkał błąd podczas pobierania http://mywebpage.com/. Może on być niedostępny w przypadku konserwacji lub skonfigurowany nieprawidłowo. "

Wszelkie pomysły?

EDIT:

ja przekonfigurować mój kod:

<?php 
include_once 'database/errorSettings.php'; 
?> 
<?php 

$buggy // whoops 
$x = 4 + 2; 
... 

errorSettings.php jest następujący:

<?php 
    ini_set('display_errors', 'On'); 
    error_reporting(E_ALL); 
?> 

Ale to nadal nie działa ... niewłaściwy sposób zmienić konfigurację?

+0

Czy masz błąd przekierowania w pliku .htaccess? – Interrobang

+1

wydajesz się mylące błędy Apache z php. –

+0

Nie jestem pewien, co to oznacza. Nie sądzę, że mam dostęp do pliku .htaccess, ale może pozwolę sprawdzić. Ponadto nie wiem, czy jest to istotne, ale jedynym błędem na stronie jest brakujący średnik. Jeśli ją wyrzucę, strona ładuje się dobrze. (sprawdzanie, czy mogę znaleźć wspomniany plik .htaccess) –

Odpowiedz

12

Co masz to parse error. Są one zgłaszane przed wykonaniem jakiegokolwiek kodu. Plik PHP musi zostać przeanalizowany w całości, zanim jakikolwiek kod w nim zostanie wykonany. Jeśli w pliku, w którym ustawiłeś poziomy błędów, wystąpił błąd analizy, nie będą one działały do ​​czasu wyświetlenia błędu.

Albo podziel pliki na mniejsze części, takie jak ustawianie poziomów błędów w jednym pliku, a następnie include inny plik, który zawiera rzeczywisty kod (i błędy), lub ustaw poziomy błędów poza PHP za pomocą php.ini lub. dyrektywy htaccess.

+0

W porządku, skonfigurowałem mój kod jak wyżej (w mojej edycji), ale nie działa. Zamierzam jeszcze raz spróbować. –

+0

Plik, który ustawia ustawienia błędów, musi zostać pomyślnie uruchomiony jako pierwszy. Jeśli błąd analizy występuje w pliku zawierającym plik, który ustawia ustawienia błędów, to nie pomaga. – deceze

+0

Och, więc muszę po prostu odwrócić moje zawarcie ... rodzaj, prawda? –

12

Należy ustawić wartość error_reporting w pliku .htaccess. Ponieważ wystąpił błąd analizy, nigdy nie uruchamia funkcji error_reporting() w twoim kodzie PHP.

Spróbuj w pliku .htaccess (zakładając, że można użyć jednego):

php_flag display_errors 1 
php_value error_reporting 30719 

myślę 30719 odpowiada E_ALL ale mogę się mylić.

Edit Aktualizacja:http://php.net/manual/en/errorfunc.constants.php

int error_reporting ([ int $level ]) 
--- 
32767 E_ALL (integer)  
All errors and warnings, as supported, except of level E_STRICT prior to PHP 5.4.0. 32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously 
+0

Wygląda na to, że mam dostęp do pliku .htaccess :( –

+1

Uwaga: w niektórych przypadkach (np. Brakujące funkcje w funkowych okolicznościach) może być konieczne włączenie 'display_startup_errors' – srcspider

+0

Tak, display_startup_errors powinien być' on'/'1'. Ponadto przedstawiam wyjaśnienie poziomu. – danielpopa

0

miałem ten problem przy korzystaniu PHP5.4 i Plesk 11,5

Jakoś ustawienia raportowania błędów błędów i wyświetlania na stronie konfiguracji domeny Plesk zostały całkowicie przesłanianie wszystkie lokalne ustawienia w pliku .htaccess lub skrypty PHP. Nie znalazłem sposobu, aby temu zapobiec, więc używaj ustawień Plesk do włączania i wyłączania raportów o błędach.

Możesz mieć ustawienia w swoim php.ini, która uniemożliwia lokalnemu serwisowi zastąpienie tych ustawień, być może egzekwowane przez panel sterowania używany na serwerze.

2

Wystarczy napisać następujący kod na początku pliku PHP:

ini_set('display_errors','on'); 
+2

To jest dokładnie to, co już mają ... – glglgl

4

Dodając do tego, co powiedziano powyżej deceze. Jest to błąd analizy, więc aby debugować błąd parsowania, utwórz nowy plik w katalogu głównym o nazwie debugSyntax.php. Umieścić to w nim:

<?php 

/////// SYNTAX ERROR CHECK //////////// 
error_reporting(E_ALL); 
ini_set('display_errors','On'); 

//replace "pageToTest.php" with the file path that you want to test. 
include('pageToTest.php'); 

?> 

uruchomić stronę debugSyntax.php i wyświetli analizować błędy od strony, którą zdecydowali się przetestować.

0

Dla osób korzystających z CodeIgniter (Jestem na C3):

Plik index.php nadpisać php.ini konfigurację, więc na pliku index.php, wiersz 68:

case 'development': 
     error_reporting(-1); 
     ini_set('display_errors', 1); 
    break; 

Można zmień tę opcję, aby ustawić to, czego potrzebujesz. Oto pełna lista:

1 E_ERROR 
2 E_WARNING 
4 E_PARSE 
8 E_NOTICE 
16 E_CORE_ERROR 
32 E_CORE_WARNING 
64 E_COMPILE_ERROR 
128 E_COMPILE_WARNING 
256 E_USER_ERROR 
512 E_USER_WARNING 
1024 E_USER_NOTICE 
6143 E_ALL 
2048 E_STRICT 
4096 E_RECOVERABLE_ERROR 

Mam nadzieję, że to pomaga.

0

Błędy składniowe nie są łatwo sprawdzane na zewnętrznych serwerach, tylko błędy środowiska wykonawczego.

Co robię? Tak jak ty, używam

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

Jednak przed uruchomieniem sprawdzam błędy składni w pliku PHP przy użyciu sprawdzania składni PHP.

Najlepszym, IMHO jest PHP Code Checker

skopiować cały kod źródłowy, wklej w głównym oknie, a następnie kliknij przycisk Analyze.

Nie jest to metoda najbardziej praktyczny, ale 2 Procedury są komplementarne i nie rozwiązuje problemu całkowicie

Powiązane problemy