❄️Frozen 2 Покажете се (само текстове) ❄

РЕДАКТИРАНЕ: Аз съм администратор на няколко уебсайта и когато включа грешки за проследяване на проблем на един от сайтовете, debug.log е затрупан със стотици редове PHP известия всеки ден за PHP проблем в плъгин. Повтарящите се известия скриват информацията за отстраняване на грешки, която търся, за да отстрани важен проблем. Опитах се да се свържа с автора на приставката чрез форума за поддръжка на приставката, за да получа поправка, за да мога да спра натрупването на дневника, но няма отговори на въпроси във форума за приставката.

Какво трябва да направя, за да потисна или поправя тази недефинирана грешка в индекса в приставката WordPress, така че да спре да добавя стотици PHP известия в debug.log, когато съм включил отстраняване на грешки?

Приставката има функция за проверка дали браузърът е мобилен. Откакто преминах към PHP 7, започнах да получавам следното PHP известие:

Недефиниран индекс: HTTP_ACCEPT в /plugins/dynamic-to-top/inc/dynamic-to-top-class.php на линия 440

Това известие не е генерирано с PHP 5.6, така че мислех, че нещо се е променило в PHP 7 за този ред, за да генерира това известие? Отговорът по-долу казва, че не промяната в PHP 7 е генерирала известието, а по-задълбочен метод за докладване. По-долу е редът, който е извикан в известието.

 if( preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; 

Проверих PHP Manual и HTTP_ACCEPT е правилен елемент за $ _SERVER.

Пълната функция е

 function is_mobile() { if( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) return true; if( preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; if( isset( $_SERVER['HTTP_USER_AGENT'] ) ) { $user_agents = array( 'midp', 'j2me', 'iphone', 'avantg', 'docomo', 'novarra', 'palmos', 'palmsource', '240x320', 'opwv', 'chtml', 'pda', 'windows\ ce', 'mmp\/', 'blackberry', 'mib\/', 'symbian', 'wireless', 'nokia', 'hand', 'mobi', 'phone', 'cdm', 'up\.b', 'audio', 'SIE\-', 'SEC\-', 'samsung', 'HTC', 'mot\-', 'mitsu', 'sagem', 'sony', 'alcatel', 'lg', 'erics', 'vx', 'NEC', 'philips', 'mmm', 'xx', 'panasonic', 'sharp', 'wap', 'sch', 'rover', 'pocket', 'benq', 'java', 'pt', 'pg', 'vox', 'amoi', 'bird', 'compal', 'kg', 'voda', 'sany', 'kdd', 'dbt', 'sendo', 'sgh', 'gradi', 'jb', '\d\d\di', 'moto' ); foreach( $user_agents as $user_string ) { if( preg_match( '/' . $user_string . '/i', $_SERVER['HTTP_USER_AGENT'] ) ) return true; } } do_action( 'mv_dynamic_to_top_check_mobile' ); return false; } 

Защо не е дефиниран индекс?

  • Този въпрос изглежда е извън темата, защото е за уеб разработка което е извън темата в Pro Webmasters. Въпроси за уеб разработка може да се задават в Stack Overflow, но не забравяйте да прочетете техните често задавани въпроси, преди да публикувате, за да сте сигурни, че въпросът ви отговаря на техните указания. В сегашния си вид този въпрос го прави не отговарят на техните указания, тъй като това би бил дублиран въпрос.
  • Не разбирам как се опитвам да пренебрегна debug.log за уеб разработка. Може би имам различна концепция за това какво означава да администрирам уебсайт?

HTTP_ACCEPT може да е правилното име на варианта на средата, но заглавката не е задължително да бъде зададена, което е причината за предупреждението. Това не е разлика между PHP 5.6 и PHP 7, а по-скоро разлика в настройката на PHP за отчитане на грешки (по подразбиране, която може да се е променила между версиите).

Тъй като заглавката може да не е настроена, проверката дали е или не, преди извършване на проверката на регулярния израз ще коригира предупреждението:

if( isset($_SERVER['HTTP_ACCEPT']) && preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; 
  • Благодаря ти. Добавих това в горната част на функцията. Надявам се, че това е точното място да го добавя - работи. Вече не получавам известие за PHP.
  • Ами сега. Проговорих твърде рано. Известието се връща, но сочи към различна линия отново и отново. Как просто да го потисна? [22-Jan-2018 19:02:56 UTC] PHP Notice: Undefined index: HTTP_ACCEPT in /wp-content/plugins/dynamic-to-top/inc/dynamic-to-top-class.php on line 443

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?