❄️Frozen 2 Show Yourself (kun tekst) ❄

REDIGERING: Jeg er administrator af flere websteder, og når jeg tænder fejlretning for at spore et problem på et af webstederne, er debug.log rodet med hundreder af linjer med PHP-meddelelser hver dag om et PHP-problem i et plugin. De gentagne meddelelser tilslører de fejlretningsoplysninger, jeg leder efter, for at løse et vigtigt problem. Jeg prøvede at kontakte forfatteren af ​​pluginet gennem plugins supportforum for at få en løsning, så jeg kan stoppe opbygningen af ​​loggen, men der er ingen svar på spørgsmål i forummet til plugin'et.

Hvad skal jeg gøre for at undertrykke eller rette denne udefinerede indeksfejl i WordPress-pluginet, så det stopper med at tilføje hundreder af PHP-meddelelser i debug.log, når jeg har slået fejlretning til?

Pluginet har en funktion til at kontrollere, om browseren er mobil. Siden jeg skiftede til PHP 7, begyndte jeg at få følgende PHP-meddelelse:

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

Denne meddelelse blev ikke genereret med PHP 5.6, så jeg troede, at der var ændret noget i PHP 7 for denne linje for at generere den meddelelse? Svaret nedenfor siger, at det ikke er en ændring i PHP 7, der genererede meddelelsen, men en mere grundig rapporteringsmetode. Følgende er den linje, der kaldes ud i meddelelsen.

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

Jeg tjekkede PHP-manualen, og HTTP_ACCEPT er et korrekt element for $ _SERVER.

Den fulde funktion 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 et defineret indeks?

  • Dette spørgsmål ser ud til at være uden for emnet, fordi det handler om web-udvikling hvilket er uden for emnet hos Pro Webmasters. Webudviklingsspørgsmål kan blive stillet på Stack Overflow, men sørg for at læse deres ofte stillede spørgsmål, inden du sender, for at sikre at dit spørgsmål overholder deres retningslinjer. I sin nuværende form gør dette spørgsmål det ikke opfylde deres retningslinjer, da det ville være et duplikat spørgsmål.
  • Jeg forstår ikke, hvordan det at forsøge at afbryde debug.log handler om webudvikling. Måske har jeg et andet koncept for, hvad det betyder at administrere et websted?

HTTP_ACCEPT kan godt være det korrekte miljøvarnavn, men den overskrift indstilles ikke nødvendigvis, hvilket er årsagen til advarslen. Dette er ikke en forskel mellem PHP 5.6 og PHP 7, men mere en forskel i PHP's fejlrapporteringsindstilling (hvis standard muligvis har ændret sig mellem versioner).

Da overskriften muligvis ikke er indstillet, kontrollerer advarslen om det er før udførelsen af ​​regulært udtryk eller ej:

if( isset($_SERVER['HTTP_ACCEPT']) && preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; 
  • Tak skal du have. Jeg tilføjede det til toppen af ​​funktionen. Jeg håber, det var det rette sted at tilføje det - det fungerer. Jeg får ikke længere PHP-meddelelsen.
  • Ups. Jeg talte for tidligt. Meddelelsen er kommet tilbage, men peger igen og igen på en anden linje. 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

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?

nyttige oplysninger