Açıkçası, Linux duyuyorum. PHP betikleri 'www-data' kullanıcı altında çalışan gibi görünüyor. Ben de yüklenen dosyalar "php" ile önüne bir ad, her biri varsayılan / tmp dizininde sonuna kadar görebilirsiniz. Tüm standart sanırım. Tüm bu dosyaların izinleri olan-rw ------- yani 600, kullanıcı 'www-data', grup 'www-data'. Sorun, bir veritabanına kendi içeriğini ekler, çünkü bu dosyaları okuyabilmesi için gereken kullanıcı 'postgres'in' altında çalışan bir PostgresQL veritabanı sunucusu olması. Şu anda tabii ki olamaz. Tabii ki, bir kural olarak, veritabanı sorguları ve fonksiyonları kullanıcı (ben de 'www-data' olarak bağlamak) veritabanına bağlanan kim altında faaliyet, ama burada biz 'postgres'in' olarak çağrılacak VAR sunucu tarafı fonksiyonları bahsediyoruz . Bu iyi ya da kötü, bir PostgresQL kısıtlamadır.
Aklımda güvenliği dikkate yaparım, ama dünya ben de postgres bu dosyaları okumak için izin verirseniz altında gitmek, ya da bu dosyaların izinlerini dinlenmek olmaz düşünüyorum.
Nasıl bu dosyalar ile oluşturulan bu izinleri kontrol edebilirim? Açıkçası PHP onları kendisi oluşturur, örneğin, POST dosya upload, ama ben herhangi bir yapılandırma anahtarları bulamıyorum. Ayrıca, benim / tmp İzinleri 'drwxrwxrwt' (777) sahiptir ve, grup 'root' kullanıcı 'root' aittir.
Ben 'php_value upload_tmp_dir' ile yükleme dizinini değiştirmeye çalıştı ama hiçbir etkisi yoktur, öyle görünüyor - PHP hala / tmp geçici dosyaları depolar.
I do NOT want to use with 'move_uploaded_file' or 'chmod', since they write to the filesystem, and I want to avoid that, other than the database server inserting record(s).