1

同様の質問を探しましたが、まったく同じものは見つかりませんでした。

Linux/ApacheサーバーにこのWebページがあります。PHPスクリプトは、実行のたびにXMLファイルを開きます。面白いことに、ファイルを読み取れる場合と、まれに読み取れない場合があります..そして、読み取れない場合ファイルが存在しないと言っており、それを修正するには、ページを更新するだけです。

XML ファイルはサブディレクトリ (例: /srv/www/page/subdir/file.xml) にあり、手動でのみ変更でき、適切な権限が設定されています (PHP が読み書きできます)。

私は simplexml を使用していますが、エラーは次のとおりです。I/O warning : failed to load external entity

サーバーで何か奇妙なことが起こっているので、何が起こっているのかわかりません..

編集:いくつかのコードを追加する

if ( !file_exists( $file ) )
{           
    error_log("File " . $file . " does not exist!");
    //return FALSE;
}

if ( $obj = simplexml_load_file( $file ) )
{
    // do stuff
    return TRUE;
}
else
{
    error_log("Could not parse XML: " . $file );
    return FALSE;
}

解決済み: サーバーではなくコードのエラー

4

1 に答える 1

1

ファイルがときどき利用できない理由について明確な説明はありません。プラットフォーム/OS の問題である可能性がありますが、わかりにくいです。

ただし、問題にこのバンドエイドを適用できます。最大 3 秒待機するとファイルが「再表示」される場合、ブロックが解除される可能性があります。

$count = 0;
$found = FALSE;
while( $count < 3 && !$found ) {
   if ( !file_exists( $file ) ) {
      $count++;
      sleep( 1 ); // sleep 1 second to see if the file appears on the next try
   } else
      $found=TRUE;
}

if( !$found )
  die("file not found after 3 attempts");
于 2012-05-06T15:40:49.757 に答える