Rumah  >  Soal Jawab  >  teks badan

Kebenaran ditolak untuk subfolder

Konteks

Soalan

Saya cuba menulis fail dalam folder tertentu tetapi ia memberi saya permission returned . Jadi saya mengesahkan kebenaran dan semuanya kelihatan baik. Memandangkan ini berada dalam persekitaran pembangunan, saya memutuskan untuk menukar kebenaran pada folder "root" yang menulis semua fail kepada "Semua orang boleh melakukan apa sahaja." Saya cuba menggantikan semua kebenaran di bawah. Saya cuba mengalih keluar kebenaran yang diwarisi. Tiada apa yang boleh dilakukan.

Kemudian saya cuba menulis fail dalam folder "root". Ianya berfungsi. Pada subfolder ia berfungsi. pada sub-subfolder. cekap. Terdapat satu titik dalam rantaian subfolder di mana ia tidak berfungsi, tetapi sebelum subfolder sebenar.

Ini ialah hierarki laluan pada masa ranap sistem.

$f = new \wee\common\IO\File();
$f->write("DRIVE:/BASE_PATH/files/-/00.jpg", "hello"); // WORKS
$f->write("DRIVE:/BASE_PATH/files/-/mod/00.jpg", "hello"); // WORKS
$f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/00.jpg", "hello"); // WORKS
$pathLength = strlen("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg"); // Real path length is 85
$f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg", "hello"); // FAILS
$f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/00.jpg", "hello");
$f->write("DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/WorkersManager/workers/00.jpg", "hello");

Kelas weecommonIOFile dicipta oleh saya, tetapi boleh digunakan di banyak tempat lain.

Mesej ralat tepat yang saya terima ialah:

fopen(DRIVE:/BASE_PATH/files/-/mod/com.ci.company/site/00.jpg):无法打开流:权限被拒绝

Seratus peratus jelas: folder "root" ialah DRIVE:/BASE_PATH/files/

Sunting #1

Berikut adalah pelaksanaan kaedah File类的write.

public function write($fileName, $data, $lock = false) {
    $this->_write($fileName, $data, $lock);
}

private function _write($fileName, $data, $lock = false, $openMode = 'w') {
    if ($data === null)
        $data = "";
    
    $fh = fopen($fileName, $openMode) or die("can't open file"); // FAILS HERE
    if ($lock) {
        flock($fh, LOCK_EX);
    }
    fwrite($fh, (is_array($data) ? join("\n", $data) : $data));
    if ($lock) {
        fflush($fh);
        flock($fh, LOCK_UN);
    }
    fclose($fh);
}

P粉334721359P粉334721359226 hari yang lalu309

membalas semua(1)saya akan balas

  • P粉819533564

    P粉8195335642024-03-28 12:07:19

    Isu ini datang daripada PHP 5.6.26. Isu ini dibetulkan dengan PHP 5.6.40.

    Saya menetapkan semula kepada kebenaran asal dan semuanya baik-baik saja!

    balas
    0
  • Batalbalas