PHP Dosya İzinleri ...

3 Cevap php

Ben üzerinde çalışıyor olması bir sistem için bir yükleme komut dosyası yazmak çalışıyorum. Komut dosyası bazı varsayılan başka bir yerden dosyaları, ve onlar için çeşitli klasörler oluşturur. Ben bu bit bir tedavi çalışma var, ama tek sorun ben FTP ile giriş yaptığınızda, ben düzenleyebilir, veya PHP benim için taşındı dosyaları silemezsiniz olmasıdır.

I terminali üzerinden giriş yapabilir miyim mutlu "sudo chmod-R 777 [dir]" ve sorun uzağa gider, bu yüzden soru şu:

Ne PHP ucunda eksik?

aşağıdaki gibi benim izinleri fonksiyonu:

function set_permissions($file) 
{
  if (file_exists($file)):
    chmod($file,0777);  
  endif;    			
}

Ben 777 izinlerini ayarlamak için ideal bir% 100 değil anlıyorum, ama ben sadece PHP onları benim için taşındıktan sonra, FTP ile dosyaları düzenlemek edememek sonuca ulaşmak için çalışıyorum.

Yeterince açık oldum umarım. Bu nedenle herhangi bir yardım takdir beni şimdi kafa karıştırıyor :)

Tom

edit: The whole process is as follows:

mkdir($root_dir, 0777);
mkdir($images_dir, 0777);
if (!copy($orig_logo, $new_logo)) 
{
  echo "failed to copy $orig_logo...";
} 
  // see function above for details on set_permissions...   	
  $this->set_permissions($new_logo);
}

(Bütün yollar çok doğru)

edit: The file before I login via terminal has the following permissions:

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

Ben giriş ve bunu değiştirmek sonra dosya vardır:

-rwxrwxrwx 1 www-data www-data 2739 2009-08-26 01:45 base.css

Sistem, yönetici alanı üzerinden dosyaları düzenlemek ve silmek için olanak sağlayan bir içerik yönetim sistemidir, ve garip, bu iyi çalışıyor. Dosyaları bir şekilde Apache başka birinin dışarı kilitli gibi görünüyor ... ama dosya bilgileri aksini gösteriyor. Bu garip ...

3 Cevap

Dizin de yazma izinlerini ihtiyacı gibi geliyor.

Eğer dosya var ya da yolun doğru olduğundan emin misin?

Eğer chmod -R 777 terminali yoluyla sorunu çözmek için, o zaman what were the permissions set to by PHP before you ran chmod?? Belli değil 777. Benim tahminim PHP kodu aslında izinleri değişiyor olmasıdır.

Dosya yok eğer izin değişen fonksiyonu sessizce başarısız olabilir, kodunuzu lookat - örneğin, bunu geçersiz dosya adları (? Yanlış klasör yanlış göreli yolu) veriyorsun ama söyleyemem çünkü sizin { [(0)]} function uyarıyorum çok korkuyor. Aşağıdaki gibi yazmanız lazım:

function set_permissions($file) 
{
  if (!file_exists($file))
    throw new Exception(__FUNCTION__ . "() file doesn't exist! '$file'");
  chmod($file,0777);
  error_log("chmod 777 $file"); // debug
}

Bu neler olup bittiğini görmek için izin verir, ve size dosya adlarını doğru var değil kesinlikle fark edeceksiniz.