0

ここで少し奇妙なもの。

file()これはローカルで機能しますが、ステージング サーバーで実行すると、関数がレコードの配列ではなくブール値の true を返すため、コードが失敗します。

コードの抜粋:

if ( $input_list = file("{$path}/input_list.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) !== false) {
     foreach ($input_list as $row) {
          ... etc...
            }
}

ファイルが存在します (私は 経由でディレクトリ/ファイルにアクセスしますDirectoryIterator)、コンテンツがあります。スクリプトを実行するユーザーには、フォルダーとファイルへの読み取りと書き込みのアクセス許可があります。

もし私echogettype($input_list)それを返します:bool(true)

編集 - さまざまなフラグなしでも試しました - FILE_IGNORE_NEW_LINES と FILE_SKIP_EMPTY_LINES

ローカルで動作する (配列にレコードを入力する) が、サーバーでは true を返す理由。

サーバーはphp 5.3.21 TIA PGです

4

2 に答える 2

3

かっこを使用する必要があります。

if(($input_list = file(…)) !== false) {

それ以外の場合、条件は次のように解釈されます。

if($input_list = (file(…) !== FALSE)) {
于 2013-05-01T16:09:01.430 に答える