PHP kullanıcısı 99 tarafından yazılmış silinmeyen dosyalar

____________________________________________________________________

ZenPhoto önbelleğimi silmek istiyordum ama silemiyordum. ZenPhoto silindi diyordu ama silmiyordu, kendim silmeye kalkınca da Permission Denied diye bir hata veriyor ve silmiyordu. Sorun dosyaları oluşturan kullanıcının 99 yani PHP olmasıydı.

Eğer FTP ve Cpanel dosya yöneticisi üzerinden silemediğiniz dosyaların sahibi 99 görünüyorsa, bu dosyalar PHP tarafından oluşturulmuştur. Genelde PHP’nin Apache modülü olarak yüklü olduğu sunucularda oluyor sanırım bu.

Bu durumda çok sayıda dosya ve klasör varsa Shell/SSH erişiminiz varsa bunu deneyebilirsiniz. Root olarak oturum açıp dosyaların sahibini değiştirebilirsiniz. Tabi paylaşımlı bir hostingte iseniz büyük ihtimalle bunu yapamazsınız. Sunucu yöneticisinden ilgili dosyaların sahibini değiştirmesini isteyebilirsiniz, ya da silinmesi gerekiyorsa vs. silinmesini.

Ama sunucu yöneticisine istek göndermeden ya da ticket vs. açmadan kullanabileceğiniz bir çözüm; PHP’nin kendisini sahip olarak göstererek oluşturduğu dosyaları yine sahibine, yani PHP’ye sildirmek.

99’a ait silemediğiniz dosyaları silmek için önce bunları mümkün olduğunca tek bir klasörde toplamayı deneyin. Bunun için dosya yöneticisinden bunları tek bir klasör altına taşıyabilirsiniz. Bundan sonra da public_html ya da www gibi web erişimi olan bir klasörde silici.php adında bir dosya oluşturun. Cpanel dosya yöneticisinden dosyayı seçip Düzenle deyin, ya da dosyayı bilgisayarınızda oluşturup düzenleyip FTP ile de sunucuya yükleyebilirsiniz. Bu dosyanın içine de şu kodu girin:

<?php
 $files = glob(‘/silinecek/dosyalarin/oldugu/klasorun/yolu/*’);
foreach($files as $file){
if(is_file($file))
unlink($file);
}
  ?>

$dosyalar = glob(‘/home/siteadi/silinecekdosyalarklasoru/*’) kısmına silinmesi gereken dosyaların bulunduğu klasörün yolunu giriyorsunuz. Kodu kaydediyorsunuz ve bilgisayarınızda ise FTP ile yüklüyorsunuz. Bundan sonra siteadresi.com/silici.php dosyasını çalıştırdığınızda vermiş olduğunuz klasördeki dosya listesini alacak PHP ve dosya olanları silecek teker teker. Eğer  Invalid argument supplied for foreach() hatası alıyorsanız, bu ya belirtilen klasör yolunun bulunamadığını, ya da dosyaların PHP’nin 99 kullanıcısına ait olmadığını gösterir.

Bundan sonra içi boş olan klasörü de silmeyi unutmayın. Yalnız işlemi yaparken yanlış bir yol yazmamaya dikkat edin, gerekli dosyaların da silinmesini istemezsiniz. İşiniz bittikten sonra silici.php dosyasını da silin ki, güvenlik riskini arttırmayın boşu boşuna.