簡體   English   中英

在PHP 7.1中隱藏堆棧跟蹤(未安裝Xdebug)

[英]Hide Stack trace in PHP 7.1 (Xdebug NOT installed)

我正在使用PHP 7.1和Apache 2.4在嶄新的服務器上工作,並且獲得了Stack trace ,這使得查看錯誤所在的文件更加困難。

當我搜索此問題時,我只能找到有關xdebug的注釋,並且它創建了該注釋,但是此服務器未安裝或啟用xdebug,除非它內置在PHP 7中。

Fatal error:  Uncaught ArgumentCountError: Too few arguments to function Test::testing(), 
0 passed in /var/www/vhosts/test.com/httpdocs/test.php on line 15 and exactly 1 
expected in /var/www/vhosts/test.com/httpdocs/test.php:7
Stack trace:
#0 /var/www/vhosts/test.com/httpdocs/test.php(15): Test::testing()
#1 {main}
  thrown in /var/www/vhosts/test.com/httpdocs/test.php on line 7

有時候我會很感激,但我想正常禁用它們,並在需要時啟用它。 我期望的是一個簡單的PHP錯誤消息:

Parse error: syntax error, unexpected end of file in
/var/www/vhosts/test.com/httpdocs/test.php on line 51

帶有類的示例代碼:

class Test
{
   public static function testing($var)
   {
      echo "tet";
   }
}

Test::testing();

沒有類也會發生相同的事情:

function testing($var) {
   echo "tet";
}

testing();

有沒有一種方法可以禁用堆棧跟蹤?

關鍵是Uncaught部分:

Fatal error:  Uncaught ArgumentCountError

如果捕獲了它,則可以顯示任何內容。 因此,您可以將所有代碼包裝在:

try {
    // your code
} catch (Throwable $e) {
    echo $e->getMessage() . " in\n";
    echo $e->getFile() . ' on line ' . $e->getLine() . "\n";
    // echo $e->getTraceAsString();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM