0

特定のディレクトリ(mydomian.com/csv_bakup/)内に作成された最新のcsvファイルの日付を抽出できる関数を作成しました。コードは次のとおりです...。

public function get_last_list_exported(){
      $date_str_arr = array();

      // timestamp of last csv file ?
      exec('ls -ltr mydomian.com/csv_bakup/ | tail -1',$output);
      $temp_a = explode(' ', $output[0]);      
      $date_str_arr = explode('_', $temp_a[9]); 
      return $date_str_arr[0].'/'.$date_str_arr[1].'/20'.$date_str_arr[2];
}

この関数は、php exec()関数を使用してLinuxコマンドを実行します。

すべてローカルで正常に動作しますが、ライブサーバーに移行するとundefined offsets、行でエラーが発生します

return $date_str_arr[0].'/'.$date_str_arr[1].'/20'.$date_str_arr[2];

このようなLinuxコマンドを実行するのが最も簡単な解決策のようです...

より単純ですが、より良い解決策はありますか?

4

1 に答える 1

0

これが私が想像していることです:

undefined offset存在しない配列キーを参照していることを意味します。これは、配列が空であることを意味します。これは、$output空であることを意味します。これは、コマンドの実行が失敗したことを意味します。

最初に考えられる理由:あなたの道は間違いなく正しいですか?

2番目:サーバーがシェルアクセスを許可していない/非常に制限されたシェルアクセスしか提供していないことが原因である可能性があります。php.ini無効になっているコマンドを確認し、 http://php.net/manual/en/ini.sect.safe-mode.php#ini.safe-mode-exec-dirをお読みください。

exec()で簡単なコマンドを実行しvar_dump()、生の出力を実行して、最初のコマンドをテストします。何か手に入れましたか?

また、以前のコメント投稿者が言ったように、役立つ場合は回答を受け入れてください。

于 2013-01-16T18:22:41.483 に答える