Làm cách nào để nhận được thông báo lỗi hữu ích trong PHP?

602
Candidasa 2009-05-10 23:48.

Thường thì tôi sẽ thử chạy một tập lệnh PHP và chỉ nhận được một màn hình trống. Không có thông báo lỗi; chỉ là một màn hình trống. Nguyên nhân có thể là do lỗi cú pháp đơn giản (dấu ngoặc đơn sai, dấu chấm phẩy bị thiếu) hoặc một lệnh gọi hàm không thành công hoặc một cái gì đó hoàn toàn khác.

Rất khó để tìm ra những gì đã xảy ra. Tôi kết thúc việc bình luận ra mã, nhập các câu lệnh "echo" ở khắp mọi nơi, v.v. để cố gắng thu hẹp vấn đề. Nhưng chắc chắn phải có một cách tốt hơn, phải không?

Có cách nào để PHP tạo ra một thông báo lỗi hữu ích, giống như Java không?

30 answers

510
Darryl Hein 2009-05-10 23:52.

Đối với lỗi cú pháp, bạn cần bật hiển thị lỗi trong php.ini. Theo mặc định, chúng bị tắt vì bạn không muốn "khách hàng" nhìn thấy thông báo lỗi. Kiểm tra trang này trong tài liệu PHP để biết thông tin về 2 lệnh: error_reportingdisplay_errors. display_errorscó lẽ là một trong những bạn muốn thay đổi. Nếu bạn không thể sửa đổi php.ini, bạn cũng có thể thêm các dòng sau vào tệp .htaccess:

php_flag  display_errors        on
php_value error_reporting       2039

Bạn có thể muốn xem xét việc sử dụng giá trị của E_ALL (như Gumbo đã đề cập) cho phiên bản PHP của bạn error_reportingđể tìm tất cả các lỗi. thêm thông tin

3 mục khác: (1) Bạn có thể kiểm tra tệp nhật ký lỗi vì nó sẽ có tất cả các lỗi (trừ khi việc ghi nhật ký đã bị vô hiệu hóa). (2) Thêm 2 dòng sau sẽ giúp bạn gỡ lỗi không phải lỗi cú pháp:

error_reporting(-1);
ini_set('display_errors', 'On');

(3) Một tùy chọn khác là sử dụng trình chỉnh sửa kiểm tra lỗi khi bạn nhập, chẳng hạn như PhpEd . PhpEd cũng đi kèm với một trình gỡ lỗi có thể cung cấp thông tin chi tiết hơn. (Trình gỡ lỗi PhpEd rất giống với xdebug và tích hợp trực tiếp vào trình chỉnh sửa, vì vậy bạn sử dụng 1 chương trình để làm mọi thứ.)

Liên kết của Cartman cũng rất tốt:http://www.ibm.com/developerworks/library/os-debug/

458
Eljakim 2011-07-05 09:46.

Điều sau đây cho phép tất cả các lỗi:

ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);

Cũng xem các liên kết sau

  • http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors
  • http://php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors
  • http://php.net/manual/en/function.error-reporting.php
176
m4dm4x1337 2013-08-14 01:59.

Đoạn mã sau sẽ hiển thị tất cả các lỗi:

<?php

// ----------------------------------------------------------------------------------------------------
// - Display Errors
// ----------------------------------------------------------------------------------------------------
ini_set('display_errors', 'On');
ini_set('html_errors', 0);

// ----------------------------------------------------------------------------------------------------
// - Error Reporting
// ----------------------------------------------------------------------------------------------------
error_reporting(-1);

// ----------------------------------------------------------------------------------------------------
// - Shutdown Handler
// ----------------------------------------------------------------------------------------------------
function ShutdownHandler()
{
    if(@is_array($error = @error_get_last())) { return(@call_user_func_array('ErrorHandler', $error));
    };

    return(TRUE);
};

register_shutdown_function('ShutdownHandler');

// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
function ErrorHandler($type, $message, $file, $line)
{
    $_ERRORS = Array( 0x0001 => 'E_ERROR', 0x0002 => 'E_WARNING', 0x0004 => 'E_PARSE', 0x0008 => 'E_NOTICE', 0x0010 => 'E_CORE_ERROR', 0x0020 => 'E_CORE_WARNING', 0x0040 => 'E_COMPILE_ERROR', 0x0080 => 'E_COMPILE_WARNING', 0x0100 => 'E_USER_ERROR', 0x0200 => 'E_USER_WARNING', 0x0400 => 'E_USER_NOTICE', 0x0800 => 'E_STRICT', 0x1000 => 'E_RECOVERABLE_ERROR', 0x2000 => 'E_DEPRECATED', 0x4000 => 'E_USER_DEPRECATED' ); if([email protected]_string($name = @array_search($type, @array_flip($_ERRORS))))
    {
        $name = 'E_UNKNOWN'; }; return(print(@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message))); }; $old_error_handler = set_error_handler("ErrorHandler");

// other php code

?>

Cách duy nhất để tạo trang trống với mã này là khi bạn gặp lỗi trong trình xử lý tắt máy. Tôi đã sao chép và dán cái này từ tin nhắn SMS của riêng mình mà không cần kiểm tra nó, nhưng tôi chắc chắn rằng nó hoạt động.

61
Tomalak 2009-05-10 23:54.

Bạn có thể bao gồm các dòng sau trong tệp bạn muốn gỡ lỗi:

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

Điều này ghi đè các cài đặt mặc định trong php.ini, điều này chỉ khiến PHP báo cáo lỗi vào nhật ký.

61
James Anderson 2009-09-25 18:22.

Lỗi và cảnh báo thường xuất hiện trong ....\logs\php_error.loghoặc ....\logs\apache_error.logtùy thuộc vào cài đặt php.ini của bạn.

Ngoài ra, các lỗi hữu ích thường hướng đến trình duyệt, nhưng vì chúng không phải là html hợp lệ nên chúng không được hiển thị.

Vì vậy, "tail -f"các tệp nhật ký của bạn và khi bạn nhận được màn hình trống, hãy sử dụng các tùy chọn trình đơn IEs" view "->" source "để xem đầu ra thô.

55
Madara's Ghost 2014-02-03 10:47.

Cấu hình PHP

2 mục trong php.ini ra lệnh cho lỗi đầu ra:

  1. display_errors
  2. error_reporting

Trong sản xuất , display_errorsthường được đặt thành Off(Đó là một điều tốt, bởi vì hiển thị lỗi trong các trang web sản xuất nói chung là không mong muốn!).

Tuy nhiên, trong quá trình phát triển , nó nên được đặt thành On, để các lỗi được hiển thị. Kiểm tra !

error_reporting(kể từ PHP 5.3) được đặt theo mặc định thành E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED(nghĩa là mọi thứ đều được hiển thị ngoại trừ các thông báo, tiêu chuẩn nghiêm ngặt và thông báo không dùng nữa). Khi nghi ngờ, hãy đặt nó thành E_ALLđể hiển thị tất cả các lỗi. Kiểm tra !

Chà chà! Không kiểm tra! Tôi không thể thay đổi php.ini của mình!

Thật là xấu hổ. Thông thường các máy chủ được chia sẻ không cho phép thay đổi tệp php.ini của chúng, và do đó, rất tiếc là tùy chọn đó không khả dụng. Nhưng đừng sợ! Chúng tôi có các lựa chọn khác !

Cấu hình thời gian chạy

Trong tập lệnh mong muốn, chúng ta có thể thay đổi các mục php.ini trong thời gian chạy! Có nghĩa là, nó sẽ chạy khi script chạy! Ngọt!

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

Hai dòng này sẽ có tác dụng tương tự như thay đổi các mục trong php.ini như trên! Tuyệt vời!

Tôi vẫn nhận được một trang trống / lỗi 500!

Điều đó có nghĩa là kịch bản thậm chí đã không chạy! Điều đó thường xảy ra khi bạn gặp lỗi cú pháp!

Với lỗi cú pháp, tập lệnh thậm chí không có thời gian chạy. Nó không thành công tại thời điểm biên dịch , có nghĩa là nó sẽ sử dụng các giá trị trong php.ini, nếu bạn không thay đổi, có thể không cho phép hiển thị lỗi.

Nhật ký lỗi

Ngoài ra, PHP theo mặc định ghi lại các lỗi. Trong lưu trữ được chia sẻ, nó có thể nằm trong một thư mục chuyên dụng hoặc trên cùng một thư mục với tập lệnh vi phạm.

Nếu bạn có quyền truy cập vào php.ini, bạn có thể tìm thấy nó dưới error_logmục nhập.

31
FDisk 2009-09-25 21:48.

Tôi luôn sử dụng cú pháp này ở đầu tập lệnh php.

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');  //On or Off
30
gnarf 2009-05-10 23:59.

Có một tiện ích mở rộng thực sự hữu ích được gọi là " xdebug " sẽ làm cho báo cáo của bạn đẹp hơn nhiều.

27
hakre 2013-01-25 05:06.

Để khắc phục sự cố nhanh, thực hành, tôi thường đề xuất ở đây trên SO:

error_reporting(~0); ini_set('display_errors', 1);

được đặt ở đầu kịch bản đang gặp sự cố. Điều này không hoàn hảo, biến thể hoàn hảo là bạn cũng kích hoạt điều đó trong php.inivà bạn ghi các lỗi trong PHP để bắt lỗi cú pháp và lỗi khởi động.

Các cài đặt được nêu ở đây hiển thị tất cả các lỗi, thông báo và cảnh báo, bao gồm cả những lỗi nghiêm ngặt, bất kể phiên bản PHP nào.

Những điều tiếp theo cần xem xét:

  • Cài đặt Xdebug và kích hoạt tính năng gỡ lỗi từ xa với IDE của bạn.

Cũng xem:

  • Báo cáo lỗi (PHP đúng cách.)
  • Tài liệu về Hằng số được xác định trước
  • error_reporting()Docs
  • display_errorsDocs
27
Eduardo Oliveira 2016-01-06 08:59.

Có thể đăng ký một hook để hiển thị lỗi hoặc cảnh báo cuối cùng.

function shutdown(){
  var_dump(error_get_last());
}

register_shutdown_function('shutdown');

thêm mã này vào đầu index.php của bạn sẽ giúp bạn gỡ lỗi các vấn đề.

17
Rich Bradshaw 2011-07-05 09:49.

Nếu bạn là người cực kỳ thú vị, bạn có thể thử:

$test_server = $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "localhost" || substr($_SERVER['SERVER_NAME'],0,3) == "192";

ini_set('display_errors',$test_server);
error_reporting(E_ALL|E_STRICT);

Điều này sẽ chỉ hiển thị lỗi khi bạn đang chạy cục bộ. Nó cũng cung cấp cho bạn biến test_server để sử dụng ở những nơi khác nếu thích hợp.

Bất kỳ lỗi nào xảy ra trước khi tập lệnh chạy sẽ không bị bắt, nhưng đối với 99% lỗi mà tôi mắc phải, đó không phải là vấn đề.

17
Kld 2013-05-07 04:14.

Trên đầu trang, hãy chọn một tham số

error_reporting(E_ERROR | E_WARNING | E_PARSE);
17
Sherif 2015-11-12 20:24.

Đây là sự cố của cấu hình tải so với thời gian chạy

Điều quan trọng là phải nhận ra rằng lỗi cú pháp hoặc lỗi phân tích cú pháp xảy ra trong bước biên dịch hoặc phân tích cú pháp , điều đó có nghĩa là PHP sẽ bảo lãnh trước khi nó có cơ hội thực thi bất kỳ mã nào của bạn. Vì vậy, nếu bạn đang sửa đổi display_errorscấu hình của PHP trong thời gian chạy, (điều này bao gồm mọi thứ từ việc sử dụng ini_settrong mã của bạn đến sử dụng .htaccess, là tệp cấu hình thời gian chạy) thì chỉ cài đặt cấu hình được tải mặc định mới được phát.

Cách luôn tránh WSOD trong quá trình phát triển

Để tránh WSOD, bạn muốn đảm bảo rằng tệp cấu hình đã tải của bạn được display_errorsbật và error_reportingđặt thành -1( đây là E_ALL tương đương vì nó đảm bảo tất cả các bit được bật bất kể bạn đang chạy phiên bản PHP nào ). Đừng mã hóa giá trị không đổi của E_ALL, vì giá trị đó có thể thay đổi giữa các phiên bản PHP khác nhau.

Cấu hình đã tải là php.initệp đã tải của bạn hoặc tệp của bạn apache.confhoặc httpd.confhoặc máy chủ ảo. Các tệp đó chỉ được đọc một lần trong giai đoạn khởi động (ví dụ: khi bạn khởi động apache httpd hoặc php-fpm lần đầu) và chỉ bị ghi đè bởi các thay đổi cấu hình thời gian chạy. Đảm bảo rằng display_errors = 1error_reporting = -1trong tệp cấu hình đã tải của bạn đảm bảo rằng bạn sẽ không bao giờ nhìn thấy WSOD bất kể lỗi cú pháp hoặc phân tích cú pháp xảy ra trước khi thay đổi thời gian chạy giống như ini_set('display_errors', 1);hoặc error_reporting(E_ALL);có thể diễn ra.

Cách tìm tệp cấu hình đã tải (php.ini) của bạn

Để tìm (các) tệp cấu hình đã tải của bạn, chỉ cần tạo một tệp PHP mới chỉ với mã sau ...

<?php
phpinfo();

Sau đó, trỏ trình duyệt của bạn đến đó và xem Tệp cấu hình đã tảitệp .ini bổ sung được phân tích cú pháp , thường nằm ở đầu tệp của bạn phpinfo()và sẽ bao gồm đường dẫn tuyệt đối đến tất cả tệp cấu hình đã tải của bạn.

Nếu bạn thấy (none)thay vì tệp, điều đó có nghĩa là bạn không có đường dẫn php.ini trong Tệp cấu hình (php.ini) . Vì vậy, bạn có thể tải xuống php.ini cổ phiếu đi kèm với PHP từ đây và sao chép nó vào đường dẫn tệp cấu hình của bạn dưới dạng php.ini, sau đó đảm bảo người dùng php của bạn có đủ quyền để đọc từ tệp đó. Bạn sẽ cần khởi động lại httpd hoặc php-fpm để tải nó vào. Hãy nhớ rằng, đây là tệp php.ini phát triển đi kèm với nguồn PHP. Vì vậy, xin vui lòng không sử dụng nó trong sản xuất!


Chỉ cần không làm điều này trong sản xuất

Đây thực sự là cách tốt nhất để tránh WSOD đang phát triển. Bất kỳ ai đề nghị bạn đặt ini_set('display_errors', 1);hoặc error_reporting(E_ALL);ở đầu tập lệnh PHP của mình hoặc sử dụng .htaccess như bạn đã làm ở đây, sẽ không giúp bạn tránh được WSOD khi xảy ra lỗi cú pháp hoặc phân tích cú pháp (như trong trường hợp của bạn ở đây) nếu tệp cấu hình đã tải của bạn đã display_errorstắt.

Nhiều người (và các bản cài đặt gốc của PHP) sẽ sử dụng tệp production-ini đã display_errorsbị tắt theo mặc định, điều này thường dẫn đến sự thất vọng giống như bạn đã trải qua ở đây. Bởi vì PHP đã tắt nó khi khởi động, sau đó gặp lỗi cú pháp hoặc phân tích cú pháp và không có gì để xuất. Bạn mong đợi rằng ini_set('display_errors',1);ở đầu tập lệnh PHP của bạn nên tránh điều đó, nhưng sẽ không thành vấn đề nếu PHP không thể phân tích cú pháp mã của bạn vì nó sẽ không bao giờ đạt đến thời gian chạy.

16
Ram 2011-07-05 09:54.

Để duy trì điều này và làm cho nó trở nên phức tạp, bạn có thể chỉnh sửa tệp php.ini của mình. Nó thường được lưu trữ trong /etc/php.inihoặc /etc/php/php.ini, nhưng nhiều local hơn php.inicó thể ghi đè lên nó, tùy thuộc vào nguyên tắc thiết lập của nhà cung cấp dịch vụ lưu trữ của bạn. Kiểm tra phpinfo()tệp Loaded Configuration Fileở trên cùng, để đảm bảo tệp nào được tải cuối cùng.

Tìm kiếm display_errors trong tệp đó. Chỉ nên có 3 trường hợp, trong đó có 2 trường hợp được nhận xét.

Thay đổi dòng không chú thích thành:

display_errors = stdout
16
Eli 2009-09-25 22:09.

Dunno nếu nó sẽ giúp ích, nhưng đây là một phần của tệp cấu hình tiêu chuẩn của tôi cho các dự án php. Tôi có xu hướng không phụ thuộc quá nhiều vào cấu hình apache ngay cả trên máy chủ của riêng tôi.

Tôi chưa bao giờ gặp sự cố lỗi biến mất, vì vậy có lẽ điều gì đó ở đây sẽ cho bạn ý tưởng.

Đã chỉnh sửa để hiển thị APPLICATON_LIVE

/*
APPLICATION_LIVE will be used in process to tell if we are in a development or production environment.  It's generally set as early as possible (often the first code to run), before any config, url routing, etc.
*/

if ( preg_match( "%^(www.)?livedomain.com$%", $_SERVER["HTTP_HOST"]) ) {
    define('APPLICATION_LIVE', true);
} elseif ( preg_match( "%^(www.)?devdomain.net$%", $_SERVER["HTTP_HOST"]) ) {
    define('APPLICATION_LIVE', false);
} else {
    die("INVALID HOST REQUEST (".$_SERVER["HTTP_HOST"].")");
    // Log or take other appropriate action.
}


/*
--------------------------------------------------------------------
DEFAULT ERROR HANDLING
--------------------------------------------------------------------
Default error logging.  Some of these may be changed later based on APPLICATION_LIVE.
*/
error_reporting(E_ALL & ~E_STRICT);
ini_set ( "display_errors", "0");
ini_set ( "display_startup_errors", "0");
ini_set ( "log_errors", 1);
ini_set ( "log_errors_max_len", 0);
ini_set ( "error_log", APPLICATION_ROOT."logs/php_error_log.txt");
ini_set ( "display_errors", "0");
ini_set ( "display_startup_errors", "0");

if ( ! APPLICATION_LIVE ) {
    // A few changes to error handling for development.
    // We will want errors to be visible during development.
    ini_set ( "display_errors", "1");
    ini_set ( "display_startup_errors", "1");
    ini_set ( "html_errors", "1");
    ini_set ( "docref_root", "http://www.php.net/");
    ini_set ( "error_prepend_string", "<div style='color:red; font-family:verdana; border:1px solid red; padding:5px;'>");
    ini_set ( "error_append_string", "</div>");
}
15
Yan.Zero 2014-08-20 05:36.
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
ini_set('html_errors', 1);

Ngoài ra, bạn có thể biết thêm thông tin chi tiết với xdebug .

15
Ondřej Šotek 2015-07-16 12:38.

Tôi khuyên bạn nên dùng Nette Tracy để có hình dung tốt hơn về các lỗi và ngoại lệ trong PHP:

15
Abuzer Firdousi 2017-12-05 10:54.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
10
Ólafur Waage 2009-05-10 23:54.
error_reporting(E_ALL | E_STRICT);

Và bật lỗi hiển thị trong php.ini

9
soulmerge 2009-05-10 23:54.

Bạn có thể đăng ký trình xử lý lỗi của riêng mình trong PHP. Ví dụ: nhập tất cả các lỗi vào một tệp có thể giúp bạn trong những trường hợp khó hiểu này. Lưu ý rằng hàm của bạn sẽ được gọi, bất kể error_reporting hiện tại của bạn được đặt thành gì. Ví dụ rất cơ bản:

function dump_error_to_file($errno, $errstr) {
    file_put_contents('/tmp/php-errors', date('Y-m-d H:i:s - ') . $errstr, FILE_APPEND);
}
set_error_handler('dump_error_to_file');
7
Code Synthesis 2014-06-11 03:37.

Hai dòng chính bạn cần để nhận được các lỗi hữu ích từ PHP là:

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

Như đã được chỉ ra bởi những người đóng góp khác, chúng được tắt theo mặc định vì lý do bảo mật. Là một mẹo hữu ích - khi bạn thiết lập trang web của mình, bạn nên thực hiện chuyển đổi cho các môi trường khác nhau của mình để các lỗi này được BẬT theo mặc định trong môi trường phát triển và cục bộ của bạn. Điều này có thể đạt được với mã sau (lý tưởng là trong tệp index.php hoặc tệp cấu hình của bạn để tệp này hoạt động ngay từ đầu):

switch($_SERVER['SERVER_NAME'])
{
    // local
    case 'yourdomain.dev':
    // dev
    case 'dev.yourdomain.com':
        ini_set('display_errors',1);
        error_reporting(E_ALL);
    break;
    //live
    case 'yourdomain.com':
        //...
    break;
}
6
Rich Bradshaw 2009-05-11 00:21.

FirePHP cũng có thể hữu ích.

6
user577803 2011-01-17 10:59.

mở php.ini của bạn, đảm bảo rằng nó được đặt thành:

display_errors = On

khởi động lại máy chủ của bạn.

6
user1681048 2014-06-18 15:03.

Bạn cũng có thể muốn thử PHPStorm làm trình soạn thảo mã của mình. Nó sẽ tìm thấy nhiều lỗi PHP và các lỗi cú pháp khác ngay khi bạn nhập vào trình soạn thảo.

6
Ashutosh Jha 2014-11-11 01:23.

nếu bạn là người dùng ubuntu thì hãy truy cập vào thiết bị đầu cuối của bạn và chạy lệnh này

sudo tail -50f /var/log/apache2/error.log

nơi nó sẽ hiển thị 50 lỗi gần đây. Có một tệp lỗi error.logcho apache2 ghi lại tất cả các lỗi.

5
Daniel Sorichetti 2009-05-11 02:09.

Để bật báo cáo lỗi đầy đủ, hãy thêm cái này vào tập lệnh của bạn:

error_reporting(E_ALL);

Điều này làm cho các cảnh báo thậm chí tối thiểu hiển thị. Và, chỉ trong trường hợp:

ini_set('display_errors', '1');

Sẽ buộc hiển thị lỗi. Điều này nên được tắt trong máy chủ sản xuất, nhưng không phải khi bạn đang phát triển.

5
Noname 2014-02-01 20:24.

“LỖI” là những điều hữu ích nhất để các nhà phát triển biết lỗi của họ và giải quyết chúng để làm cho hệ thống hoạt động hoàn hảo.

PHP cung cấp một số cách tốt hơn để biết các nhà phát triển tại sao và vị trí đoạn mã của họ gặp lỗi, vì vậy bằng cách biết những lỗi đó, các nhà phát triển có thể làm cho mã của họ tốt hơn theo nhiều cách.

Cách tốt nhất để viết hai dòng sau trên đầu tập lệnh để nhận tất cả các thông báo lỗi:

error_reporting(E_ALL);
ini_set("display_errors", 1);

Một cách khác để sử dụng các công cụ gỡ lỗi như xdebug trong IDE của bạn.

4
Ayman Hourieh 2009-05-10 23:58.

Bạn có thể bật báo cáo lỗi đầy đủ (bao gồm thông báo và thông báo nghiêm ngặt). Một số người thấy điều này quá dài dòng, nhưng nó đáng để thử. Đặt error_reportingthành E_ALL | E_STRICTtrong php.ini của bạn.

error_reporting = E_ALL | E_STRICT

E_STRICT sẽ thông báo cho bạn về các chức năng không dùng nữa và cung cấp cho bạn các đề xuất về các phương pháp tốt nhất để thực hiện các tác vụ nhất định.

Nếu bạn không muốn thông báo, nhưng bạn thấy các loại thông báo khác hữu ích, hãy thử loại trừ thông báo:

error_reporting = (E_ALL | E_STRICT) & ~E_NOTICE

Ngoài ra, hãy đảm bảo rằng điều đó đã display_errorsđược bật trong php.ini. Nếu phiên bản PHP của bạn cũ hơn 5.2.4, hãy đặt nó thành On:

display_errors = "On"

Nếu phiên bản của bạn là 5.2.4 hoặc mới hơn, hãy sử dụng:

display_errors = "stderr"
4
jmucchiello 2009-05-11 08:16.

Ngoài error_reporting và cài đặt display_errors ini, bạn có thể gặp lỗi SYNTAX từ các tệp nhật ký của máy chủ web của bạn. Khi đang phát triển PHP, tôi tải nhật ký máy chủ web của hệ thống phát triển vào trình soạn thảo của mình. Bất cứ khi nào tôi kiểm tra một trang và nhận được màn hình trống, tệp nhật ký sẽ cũ và trình chỉnh sửa của tôi hỏi tôi có muốn tải lại nó không. Khi tôi làm, tôi nhảy xuống dưới cùng và có lỗi cú pháp. Ví dụ:

[Sun Apr 19 19:09:11 2009] [error] [client 127.0.0.1] PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\\webroot\\test\\test.php on line 9
3
AVKurov 2017-07-05 23:04.

Đối với những người sử dụng nginx và có màn hình trắng ngay cả đối với tệp với <?php echo 123;. Trong trường hợp của tôi, tôi không có tùy chọn bắt buộc này cho PHP trong tệp cấu hình nginx:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Tùy chọn này không có trong tệp fastcgi_params, vì vậy PHP không hoạt động và không có bất kỳ lỗi nào trong nhật ký.

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Xem đoạn giới thiệu cho bộ phim chuyển thể đầy khói lửa, có sự góp mặt của ngôi sao Edward Norton từ phim Motherless Brooklyn của Jonathan Lethem

Xem đoạn giới thiệu cho bộ phim chuyển thể đầy khói lửa, có sự góp mặt của ngôi sao Edward Norton từ phim Motherless Brooklyn của Jonathan Lethem

Edward Norton đã muốn đưa cuốn tiểu thuyết Motherless Brooklyn của Jonathan Lethem's Joycean 1999 lên màn ảnh kể từ khi nó được xuất bản. Bây giờ, 20 năm sau, một đoạn giới thiệu đã xuất hiện cho câu chuyện sôi nổi, đưa câu chuyện của Lethem trở lại những năm 1950 với rất nhiều gương mặt quen thuộc.

Cách dễ dàng chọn không tham gia trọng tài ràng buộc thẻ Apple

Cách dễ dàng chọn không tham gia trọng tài ràng buộc thẻ Apple

Có thích thú khi sử dụng Thẻ Apple mới của bạn không? Trước khi bạn bắt đầu chi tiêu, có một nhiệm vụ bổ sung cần xem xét: chọn không tham gia trọng tài ràng buộc. Bạn sẽ phát hiện ra các điều khoản trọng tài ràng buộc trong nhiều thỏa thuận tài chính vì nó giúp ngăn các ngân hàng và đối tác kinh doanh của họ không phải ra tòa.

Những người chơi Fortnite World Cup không ghi bàn có cảm giác hài hước về điều đó

Những người chơi Fortnite World Cup không ghi bàn có cảm giác hài hước về điều đó

Điểm số tại vòng chung kết Fortnite World Cup Solo hôm nay là rất lớn, với người chiến thắng Bugha ghi được nhiều hơn 26 điểm so với người về thứ hai là Psalm. Nhưng không phải ai cũng có thể giành chiến thắng: Bốn cầu thủ ra về với 0 điểm, nhưng — ít nhất là trên Twitter — họ là những người thể thao tốt về điều đó.

Báo cáo: Cánh cửa tuyển sinh có thể đã mở cho các ứng viên UCLA có mối quan hệ có ảnh hưởng

Báo cáo: Cánh cửa tuyển sinh có thể đã mở cho các ứng viên UCLA có mối quan hệ có ảnh hưởng

Huấn luyện viên trưởng của bộ môn thể dục dụng cụ UCLA Valorie Kondos-Field theo dõi Katelyn Ohashi thi đấu thăng bằng trong trận gặp Stanford tại Pauley Pavilion vào ngày 10 tháng 3 năm 2019 ở Los Angeles, California. Vụ bê bối gian lận tuyển sinh đại học tiết lộ các chi tiết của một quá trình chính thức hóa để đưa những đứa trẻ thất bại của các gia đình giàu có và nổi tiếng vào các trường đại học đáng tin cậy và danh tiếng, sử dụng một "cửa phụ" đắt tiền cho các bậc cha mẹ mà sự giàu có của họ khiến họ không có cơ hội. chỉ cần tài trợ cho một cánh mới trong khuôn viên trường.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Tầm nhìn đám mây phi tập trung của DFINITY Blockchain

Lưu ý của người biên tập: Bạn đang xem tài liệu lỗi thời từ blog DFINITY đang được bảo quản cho mục đích lưu trữ.

Tầm nhìn đám mây phi tập trung của DFINITY Blockchain

Bài đăng này khám phá tầm nhìn về đám mây phi tập trung của nhóm DFINITY và cách nó liên quan đến các nhà cung cấp blockchain truyền thống và đám mây hiện có như Amazon Web Services. Các minh chứng về công nghệ DFINITY được áp dụng bởi một mạng lưới quy mô lớn sẽ được thực hiện vào mùa thu năm 2017, sau đó sẽ được gây quỹ Chính cho quỹ hỗ trợ phi lợi nhuận, với mạng “đám mây mở” dự kiến ​​sẽ ra mắt vào đầu mùa hè năm 2018 .

Language