Tmp dizininde bir görüntü gösteriliyor

3 Cevap php

Ben şu var. Linux sunucu üzerinde / tmp klasöründe geçici görüntüler oluşturmak bir web sitesi. Bu görüntüler bir süre sonra temizlenmiş olması gerekir ve sadece tmpwatch kullanarak tmp dizini temizlemek için çok kolay çünkü bu klasör içinde saklayın nedenidir. Şimdi benim sorun benim tarayıcıda görüntüyü göstermek için mi?

Kod

<img src="/tmp/3d34636.png" alt="image" />  

PHP ile CentOS koşuyorum

3 Cevap

Burada sorun, bu img tarayıcı (istemci) tarafından işlenmiş olmasıdır. Bu istemci HTTP sunucusu dosya sistemine erişimi yok.

Bu nedenle, / tmp / dizinindeki dosyaları kullanarak, HTTP sunucusu geçerli bir yer olması için / tmp dizini define (ancak bu dizinde bulunan diğer herhangi bir dosya hizmet edeceğini unutmayın, bir güvenlik riski potentialy) ya sahiptir.

Yoksa zaten HTTP sunucusu tarafından sunulan bir alt Oluşturulan görüntüleri depolamak.

Ayrıca görüntü adını içeren URL analiz edecek bir komut dosyası tarafından servis edilecek sunucu üzerinde bu / tmp konumunu tanımlamak mümkün olabilir. Bu komut dosyası daha sonra / tmp / dosyayı açın ve hizmet verecek.

@ Didier zaten sorunu ve güvenlik risklerini özetliyor. Eğer bir parametre olarak dosya adını kabul eder, ve sonra /tmp dizinindeki dosyaya geçer bir PHP komut dosyası inşa bile, hassas verileri içerebilir geçici dosyalar ile kamu içerik karıştırma olacaktır. Aksi takdirde bu bir güvenlik açığı olacağını, dosyaları komut dosyası tarafından oluşturulan ve görüntülemek için tamam, ve olanlar değil hangi bir listesini tutmak gerekir.

Ben avantajlarına rağmen /tmp Bunun için unutmak demek, ve kendilerine ait bir alt dizinde görüntüleri saklamak istiyorum. (Örneğin, bir cron işi kullanarak, veya dosya yaş veya "son erişilen" zamana dayalı) sık sık silin.

Sen komutu çalışan bir cron işi oluşturarak başka dizini temizlemek için tmpwatch alabilirsiniz:

/usr/sbin/tmpwatch -umc 240 /path/to/directory

240 dosyaları silme önce (bu durumda 10 gün) için kullanılan değil ki saat sayısıdır. man tmpwatch Tüm ayrıntılar için bkz.