2017-09-10 60 views
3

我從ANSI.php獲得數百個。下面是一個例子:PHP禁用特定文件的錯誤?

$ansi->appendString($ssh->read()); 

一切工作:

/usr/share/pear/File/ANSI.php on line 553 Notice: Undefined offset: 75 in 
/usr/share/pear/File/ANSI.php on line 555 Notice: Undefined offset: 76 in 
/usr/share/pear/File/ANSI.php on line 553 Notice: Undefined offset: 76 in 
/usr/share/pear/File/ANSI.php on line 555 Notice: Undefined offset: 77 in 
/usr/share/pear/File/ANSI.php on line 555 Notice: Trying to get property of non-object in 
/usr/share/pear/File/ANSI.php on line 496 Notice: Trying to get property of non-object in 

這是從產生。我懷疑我正在使用的舊機器給ANSI.php一個很難的時間。

有沒有一種方法可以禁用來自ANSI.PHP的錯誤信息並保留其他信息?除非有人有辦法糾正錯誤。

+0

我不知道ansi lib,但你可以確保'$ ssh-> read()'是一個字符串嗎?比如'$ ansi-> appendString((string)$ ssh-> read());' – antoni

+0

所以我換了$ ansi-> appendString((string)$ ssh-> read());相同的結果。 – MoonEater916

+0

'$ str = $ ssh-> read();如果(!empty($ str)){$ ansi-> appendString($ str); }' – apokryfos

回答

1

簡單的解決辦法(次優)

我想壓制的錯誤是使用錯誤抑制操作@最簡單的方法。例如。

@$ansi->appendString($str); 

最優解(可能)

已經有兩次提交,因爲是最新版本的phpseclib(1.0.7和2.0.6,因爲這個職位的)是固定的文件/ ANSI問題.PHP:

https://github.com/phpseclib/phpseclib/commit/5c792f6bc1fa8a5d26b43fb8200191c073637e15 https://github.com/phpseclib/phpseclib/commit/84d1628cb7734134b1ba80545b38985025942b79

更多信息:

https://github.com/phpseclib/phpseclib/issues/1161 https://github.com/phpseclib/phpseclib/issues/1150

有點讓我想知道如果其中一個可能會解決您的問題。

預置至最優解

如果前面提到的「最佳解決方案」並不解決該問題對你那麼這將是很好,從源頭上解決問題。什麼幫助我做到這一點將是你在將它傳遞給$ansi->appendString()之前獲得的數據的副本。爲了使它不會變得亂碼,因爲它們是擴展ASCII可能是十六進制編碼。例如。 echo bin2hex($ssh->read());什麼的。

+1

聽起來這是一個已知的問題,可能會在下一個穩定版中發佈。我可以等待,並且@ $ ansi應該沒問題。不幸的是,很多數據是保密的,我只能發佈不明確的或編輯的部分,否則我會給你十六進制。 – MoonEater916