EDIT: Olen mitme veebisaidi administraator ja kui lülitan silumise sisse, et ühel saidil probleem üles leida, on debug.log täis sadu ridu PHP-teateid iga päev pluginas oleva PHP-probleemi kohta. Korduvad teated varjavad silumisinfot, mida otsin olulise probleemi lahendamiseks. Proovisin paranduse saamiseks ühendust võtta pistikprogrammi autoriga pistikprogrammi tugifoorumi kaudu, et saaksin logi ülesehituse peatada, kuid pistikprogrammi foorumis pole küsimustele vastuseid.

Mida ma pean tegema selle määratlemata indeksvea tõrjumiseks või parandamiseks WordPressi pistikprogrammis, nii et see peatab debug.logis sadade PHP-teadete lisamise, kui mul on silumine sisse lülitatud?

Pistikprogrammil on funktsioon kontrollida, kas brauser on mobiilne. Alates üleminekust PHP 7-le hakkasin saama järgmist PHP-teadet:

Määratlemata register: HTTP_ACCEPT kataloogis /plugins/dynamic-to-top/inc/dynamic-to-top-class.php real 440

Seda teadet ei genereeritud PHP 5.6-ga, nii et arvasin, et selle rea genereerimiseks on PHP 7-s midagi muutunud? Allpool olev vastus ütleb, et teade ei ole PHP 7 muudatus, vaid põhjalikum aruandlusmeetod. Järgmine on rida, mida teates välja kutsutakse.

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

Vaatasin PHP käsiraamatu ja HTTP_ACCEPT on $ _SERVERi jaoks õige element.

Täielik funktsioon on

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

Miks see pole määratletud indeks?

  • See küsimus näib olevat teemaväline, kuna see on umbes Veebiarendus mis on Pro Webmastersis teemaväline. Veebiarenduse küsimusi võidakse esitada aadressil Stack Overflow, kuid lugege enne postitamist kindlasti nende KKK-d, et teie küsimus vastaks nende juhistele. Praegusel kujul see küsimus küll mitte vastama nende juhistele, kuna see oleks korduv küsimus.
  • Ma ei saa aru, kuidas debug.log'i deklareerimise üritamine käib veebiarenduse kohta. Võib-olla on mul erinev arusaam sellest, mida tähendab veebisaidi haldamine?

HTTP_ACCEPT võib olla õige keskkonnamuutuja nimi, kuid see päis ei pruugi olla määratud, mis on hoiatuse põhjus. See ei ole erinevus PHP 5.6 ja PHP 7 vahel, vaid pigem erinevus PHP tõrketeadete seadistuses (mille vaikeväärtus võib olla versioonide vahel muutunud).

Kuna päist ei pruugita seadistada, parandab hoiatus kontrollimine, kas see on enne tavaväljendikontrolli:

if( isset($_SERVER['HTTP_ACCEPT']) && preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) ) return true; 
  • Aitäh. Lisasin selle funktsiooni ülaossa. Loodan, et see oli õige koht selle lisamiseks - see töötab. Ma ei saa enam PHP teadet.
  • Vabandust. Ma rääkisin liiga vara. Teade on tagasi tulnud, kuid osutab ikka ja jälle teisele joonele. Kuidas seda lihtsalt maha suruda? [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

none: Charles Robertson | none