is_writable () return false

5 Cevap php

Ben PHP fonksiyon fwrite ile bir sorunu bekliyor () ediyorum

$filename = 'rss.xml';  

if (file_exists($filename)) {
    echo "The file $filename exists";
} 

if (is_writable($filename)) {
    $fp = fopen($filename, 'w');
    fwrite($fp, $feed);
    fclose($fp);
 }
else{
    echo '<br />not writable..';
    if(!is_readable($filename)){
    echo ' and not readable!';
    }
}

Bir kere komut dönüşünü idam:

The file rss.xml exists
not writable.. 

rss.xml için chmod 755 ve safemode kapalı.

Ben (DV) üzerine (mt) mediatemple.com barındırılan yaşıyorum ve ben (gs) çözümü üzerinde barındırılan zaman komut dosyası gayet iyi çalışıyordu.

I / = yanlış bulamıyorsun

5 Cevap

CHMOD 0755 sadece dosya sahibi (grup ve diğerleri okuma ve yürütmek) içine yazmak anlamına gelir. Bir PHP kullanıcı / grup olarak 0775 ya da 0777 için CHMOD değiştirmek gerekir.

755 şu anlama gelir:

  • rwx: okuma, yazma, sahibi için idam
  • r-x: okumak, grup için idam
  • r-x: okumak, başkalarının yürütmek

Yani, herkes (and execute) Bu dosya okuyabilir, ancak sadece sahibi bunu yazabilirsiniz.

Belki dosyanın sahibi kullanıcı PHP komut dosyası çalıştıran biri değildir? script Apache user (often www-data tarafından işletilen edilirken yani dosya ), herkese ait olabilir?


A first idea might be to delete the file, let your script try to re-create it ; if it's re-created properly (which means Apache has the requires write rights on the directoy containing it), it should be able to modify it, after that.

Else, için other write ayrıcalık vererek denemelisiniz - script dosyasının sahibi daha başka bir kullanıcı tarafından yürütülüyor ise; chmod o+w rss.xml hile yapmak gerekir.

755 dosya sahibi herkesten değil değiştirebilirsiniz, ancak anlamına gelir. Sahibi muhtemelen web sunucusu değil ama kendinizi (FTP hesap?), Böylece PHP onu değiştiremezsiniz. O geniş persmissions vermeye çalışın. 775 ile başlayın ve bu işe yaramazsa, 777, deneyin.

Orada onlar dosya izinleriyle ilgili destek soruları alamadım böylece FTP hesabı olarak aynı kullanıcı olarak web sunucusunu çalıştıran bazı web barındıran, ama bence bu büyük bir güvenlik açığıdır. Ben Mediatemple FTP hesabı olarak web sunucusu çalıştırmak değil doğru şeyi yapar diye düşünüyorum.

Farklı Hostings PHP çalışır gibi ya dosyalara erişen

OWNER veya

GROUP veya

WORLD

İlk varyant size güvenlik için en iyisidir.

O durumda siz son durumda, dosya perma 644 koymalıdır - 666.

Neden 777 set ve sadece orada veri depolamak ise dosyayı çalıştırılabilir yapmak için?