Bir dizin PHP yazılabilir olup olmadığını nasıl kontrol edebilirim?

7 Cevap php

Herkes bir dizin PHP yazılabilir olup olmadığını görmek için kontrol edebilirsiniz nasıl biliyor mu?

Fonksiyonu is_writable klasörler için çalışmaz.

7 Cevap

Evet, bu klasörler için çalışır ....

Dosya var ve yazılabilir ise, DOĞRU verir. Dosya ismi argüman bir dizin yazılabilir olup olmadığını kontrol etmek için izin veren bir dizin adı olabilir.

bu kodu :)

<?php 

$new_file_name = '/var/www/your/file.txt';

if (!is_writable(dirname($new_file_name))) {

    echo dirname($new_file_name) . ' must writable!!!';
} else {

    // blah blah blah
}

Göre the documentation for is_writable, sadece çalışması gerekir - ama "klasör" dedi, yani bu a Windows issue olabilir. Yorum önermek a workaround.

(A me firar bölü önemli olduğunu düşünüyorum yapılan daha önceki okuma koştu, ama etrafında bu işe özgü olduğu ortaya çıktı).

sahibi / grup / dünya için daha spesifik olmak

$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";

barış ...

stat ()

Çok bir sistem, stat gibi, ama PHP. Ne kontrol etmek istediğiniz mod değeri çok gibi olur (IE C / C + +) diğer dilleri de stat başka bir çağrı var.

http://us2.php.net/stat

Sen is_writable () işlevine bir tam dosya yolu gönderiyor olabilir. dosya zaten dizinde yoksa is_writable () false dönecektir. Bu durumda eğer kaldırıldı dosya ile dizinin kendisini kontrol etmeniz gerekir. Bunu yaparsanız, is_writable doğru dizin yazılabilir olup olmadığını size söyleyecektir. $ Dosya içeriyorsa dosya yolu bunu:

$file_directory = dirname($file);

Sonra klasör yazılabilir olup olmadığını belirlemek için ($ file_directory) is_writable kullanın.

Ben bu kimse yardımcı olur umarım.

PHP kılavuzuna göre is_writable dizinleri cezası çalışması gerekir.