2016-07-25 10 views
0

対Mac上で切り抜いた結果、このコードなぜ私はこのPHPを取得していますNotice:未定義のオフセット?私は「お知らせ:オフセット未定義」を得続けるの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"; 

    } 
?> 

エラーのためには、

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

このラインで任意のアイデアを発生しますか?このコードは、Macではエラーを表示しませんが、Windowsマシンではエラーが発生します。

+3

配列に1要素しかない場合は、 '$ pageDirs [-1]'を実行していて、負の配列インデックスを持つことはできません。したがって、デバッグを開始してください: 'var_dump($ pageDirs)'とエラーが発生したときにそこにあるものを参照してください。また、 '$ pageDirs'は配列ではなく、その点の文字列であることを意味する' unset OFFSET'を取得していることに注意してください。 –

答えて

0

これは、WindowsではおそらくC:\ public_htmlにサーバーがあるからです.Macではおそらく/ Users/YOU/public_htmlにあります。ウィンドウ内のパスを爆発させると、要素が1つしかない配列、つまり '/'がないため、非常に同じパスが得られます。 Macで実行すると、3つの要素を持つ配列が返されます。
Macの場合、インデックスsizeof($ pagesDir)は2より大きく、ウィンドウは2よりも小さいので、負のインデックスのためにエラーが発生します。
この回答は間違っている可能性があります。ファイルの管理方法やページルートの場所はわかりませんが、これが最も可能性の高い回答だと思います。

関連する問題