Neden ben "izin engellendi"

5 Cevap php

Ben dizin içeriği ile aynı, 777 dizin chmod'ed. Yine de, bir "izin engellendi" hatası alıyorum. Apache grup / sahibi, ne olursa olsun dosya izinlerine değilse PHP bu hatayı atmak mı? Burada başarısız oluyor çağrısı:

rename('/correct/path/to/dir/1', '/correct/path/to/dir/2');

5 Cevap

Sen üst düzey dizini düzenleme yapıyoruz, böylece PHP kullanıcının o dizine yazma erişimi olması gerekir.

Thats muhtemelen apache üst dizinin sahibi değil çünkü. Yeniden adlandırma (veya hareketli) bir dosya temelde yeni bir dosya oluşturma gibi aynı şeydir.

netleştirmek için, php sadece üzerinde fiili sahipliğini var dizinleri yeniden adlandırmak:

-rwxrwxrwx user   user   temp/
-rwxr-xr-x apache apache temp2/
-rw-r--r-- user   user   script.php

script.php bu iki dizinleri yeniden adlandırmak için çalışıyor varsayalım:

// this operation fails as PHP (running as apache) does not own "temp",
// despite having write permissions    
rename('temp', 'temp.bak');

// this operation is successful as PHP owns "temp2"
rename('temp2, 'temp.bak');

Aşağıdaki komut dosyası çalıştırmayı deneyin:

print_r(posix_getpwuid(getmyuid()));
print_r(pathinfo($YOUR_PATH));

Ve döner görmek.

Durumlarda bu tür yardımcı olabilir başka bir şey izinleri düşürücü aslında çalışmaktır. Ben onun izinleri high çok ayarlandığı için apache bir şey yapmak için bir uygulama izin vermez vesilelerle gördük. Benim tahminim, bu iyi bir güvenlik uygulaması teşvik etmek olmasıdır.