❄️Frozen 2 Show Yourself (kun tekst) ❄

EDIT: Jeg er administrator for flere nettsteder, og når jeg slår på feilsøking for å spore et problem på et av nettstedene, er debug.log rotete med hundrevis av linjer med PHP-merknader hver dag om et PHP-problem i et plugin. De gjentatte merknadene tilslører feilsøkingsinformasjonen jeg leter etter for å fikse et viktig problem. Jeg prøvde å kontakte forfatteren av pluginet gjennom pluginens supportforum for å få en løsning, slik at jeg kan stoppe oppbyggingen av loggen, men det er ingen svar på spørsmål i forumet for plugin.

Hva må jeg gjøre for å undertrykke eller fikse denne udefinerte indeksfeilen i WordPress-pluginet, slik at det slutter å legge til hundrevis av PHP-merknader i debug.log når jeg har slått på feilsøking?

Plugin har en funksjon for å sjekke om nettleseren er mobil. Siden jeg byttet til PHP 7, begynte jeg å få følgende PHP-merknad:

Udefinert indeks: HTTP_ACCEPT i /plugins/dynamic-to-top/inc/dynamic-to-top-class.php på linje 440

Denne meldingen ble ikke generert med PHP 5.6, så jeg trodde noe hadde endret seg i PHP 7 for at denne linjen skulle generere den meldingen? Svaret nedenfor sier at det ikke er en endring i PHP 7 som genererte varselet, men en grundigere rapporteringsmetode. Følgende er linjen som er kalt ut i kunngjøringen.

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

Jeg sjekket PHP Manual og HTTP_ACCEPT er et riktig element for $ _SERVER.

Full funksjon er

 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; } 

Hvorfor er det ikke en definert indeks?

  • Dette spørsmålet ser ut til å være utenfor emnet, fordi det handler om webutvikling som er utenfor emnet hos Pro Webmasters. Nettutviklingsspørsmål kan bli stilt på Stack Overflow, men sørg for å lese FAQs før du legger ut for å sikre at spørsmålet ditt oppfyller retningslinjene. I sin nåværende form gjør dette spørsmålet ikke oppfyller retningslinjene deres, da det ville være et duplikat spørsmål.
  • Jeg forstår ikke hvordan det å prøve å oppheve debug.log handler om nettutvikling. Kanskje jeg har et annet begrep om hva det vil si å administrere et nettsted?

HTTP_ACCEPT kan godt være det riktige navnet på miljøvarianten, men den overskriften vil ikke nødvendigvis være angitt, noe som er årsaken til advarselen. Dette er ikke en forskjell mellom PHP 5.6 og PHP 7, men mer en forskjell i PHPs feilrapporteringsinnstilling (standard som kan ha endret seg mellom versjoner).

Siden overskriften kanskje ikke er angitt, kontrollerer advarselen om det er før du utfører regulært uttrykk eller ikke:

if( isset($_SERVER['HTTP_ACCEPT']) && preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; 
  • Takk skal du ha. Jeg la det til øverst i funksjonen. Jeg håper det var riktig sted å legge det til - det fungerer. Jeg får ikke lenger PHP-varselet.
  • Beklager. Jeg snakket for tidlig. Merknaden har kommet tilbake, men peker på en annen linje om og om igjen. Hvordan undertrykker jeg det bare? [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

fungert for deg: Charles Robertson | Ønsker du å kontakte oss?