2016-07-25 4 views
0

Ich erhalte "Hinweis: Undefined offset" für diesen CodeWarum bekomme ich diesen PHP Hinweis: Undefinierter Offset? Diffrent Ergebnisse auf Mac vs Windows-

<?php 
    // Detect the subdirectory of the page 
    $pagePath = getcwd(); 
    $pageDirs = explode("/", $pagePath); 

    $currentDir = $pageDirs[sizeof($pageDirs)-1]; 
    $isHome = false; 
    $subDir = null; 

    if ($currentDir != "public" && $currentDir != "components" && $currentDir != "prototypes" && $currentDir != "styleguide"){ 
     // 2 levels deep in a Pages directory 
     // Save the last 2 levels into vars 
     $subDir = $currentDir; 
     $currentDir = $pageDirs[sizeof($pageDirs)-2]; 
    } 

    $hostname = getenv('HTTP_HOST'); 

    if ($currentDir == "legacy" || $_SERVER["PHP_SELF"] == "/coronita/index.php"){ 
     // This is the home index page 
     // No subnav will be needed 
     $isHome = true; 
     $currentDir = "overview"; 

    } 
?> 

der Fehler bei dieser Linie auftreten

$currentDir = $pageDirs[sizeof($pageDirs)-2]; 

Irgendwelche Ideen? Dieser Code zeigt keine Fehler auf einem Mac, aber auf meinem Windows-Rechner erhalte ich den Fehler.

+3

Wenn das Array nur 1 Element hat, dann tun Sie '$ pageDirs [-1]', und Sie können keine negativen Array-Indizes haben. Starten Sie also das Debugging: 'var_dump ($ pageDirs)' und sehen Sie, was zu dem Zeitpunkt, an dem Sie den Fehler erhalten, dort ist. Und beachten Sie, dass Sie "undefined OFFSET" erhalten, was bedeutet, dass "$ pageDirs" an dieser Stelle ein String ist, kein Array. –

Antwort

0

Das liegt daran, dass Sie unter Windows wahrscheinlich Ihren Server auf C: \ public_html haben, auf Mac wahrscheinlich in/Users/YOU/public_html. Wenn Sie den Pfad in Windows explodieren, erhalten Sie ein Array mit nur einem Element, dem gleichen Pfad, da kein '/' vorhanden ist. Wenn Sie es auf dem Mac ausführen, wird ein Array mit 3 Elementen zurückgegeben.
Also, wenn Sie in Mac sind der Index sizeof ($ pagesDir) ist größer als 2 und in Windows niedriger als 2, so dass es einen Fehler wegen des negativen Index wirft.
Diese Antwort könnte falsch sein, ich weiß nicht, wie Sie Ihre Dateien verwalten oder wo Ihre Seite root ist, aber ich denke, das ist die wahrscheinlichste Antwort.

Verwandte Themen