-2

私はこのファイルを実行しています:

 $file_name = "WEL_log_".date('Y_m');

 $url  = 'http://www.welserver.com/WEL0521/'.$file_name.'.xls';

 $base_path = '/Applications/XAMPP/xamppfiles/htdocs/website/';

 $tmp_path =  $base_path.'tmp_'.$file_name.'.tsv';
 $path = $base_path.$file_name.'.tsv';
 $current_month_path = $base_path.'current_month.tsv';
 $latest_path = $base_path.'latest.tsv';


function downloadFile ($url, $path) {

 global $latest_path;
 global $tmp_path;
 global $current_month_path;
global $base_path;

 $newfname = $tmp_path;
 $file = fopen ($url, "rb");
 if ($file) {

以下の行は、コーディングの 37 行目です。

 $newf = fopen ($newfname, "wb");

 if ($newf){
    while(!feof($file)) {
      fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
    }
}
}

 if ($file) {
 fclose($file);
 }

if ($newf) {
copy($tmp_path, $current_month_path);

rename($tmp_path, $path);


fclose($newf);

write_latest_data($path, $latest_path);
 }

  }

  function write_latest_data($read_file_path, $write_file_path, $no_of_new_lines=10){

$file = file($read_file_path);

$write_f = fopen ($write_file_path, "wb");

$line_count = count($file) > $no_of_new_lines ? $no_of_new_lines : count($file);

if ($write_f){

    fwrite($write_f, $file[0], 1024 * 8 );

    $file = array_reverse($file);

    for($i=0; $i < $line_count; $i++){
        fwrite($write_f, $file[$i], 1024 * 8 );
    }

    fclose($write_f);
}

そしてこの警告を得る

警告: fopen(/Applications/XAMPP/xamppfiles/htdocs/website/tmp_WEL_log_2013_08.tsv): ストリームを開くことができませんでした: 行 37 の /Applications/XAMPP/xamppfiles/htdocs/website/download.php で許可が拒否されました

私が間違っていることを教えてください。

4

1 に答える 1

0

エラーメッセージは、ファイルを書き込み用に開くことができないことを示しています。ベース パスに書き込み権限があるかどうかを確認します: /Applications/XAMPP/xamppfiles/htdocs/website/

Apache が実行されているユーザーとユーザー グループを確認する必要があります。ほとんどの場合、どちらも www-data です。したがって、webfoot のファイルには、ユーザーとグループの www-data が割り当てられている必要があります。ユーザーとグループの両方がパーミッション 755 に一致する場合、基本パスには十分なはずです。グループのみが一致する場合は、775 で問題ありません。一致するものがない場合は、777 を設定する必要がありますが、ライブ システムではこれを行うべきではありません。

于 2013-08-18T20:54:13.443 に答える