Dosya sistemi operasyonları benim PHP komut dosyası çalışmaz;

4 Cevap php

PHP mkdir ile bazı izinleri sorunları yaşıyorum. Ben sadece etrafında bazı dosyaları taşımak (ve onları koymak için bir klasör oluşturmak) için çalışıyorum, ama ben bu hatayı alıyorum:

mkdir() [function.mkdir]: Permission denied in

Benim eski sitede, benim klasörler 755 batmıştı ve işler iyi iş gibi görünüyordu. Klasörler modu olarak 777 var zaman seems I mkdir veya ilgili fonksiyonları bu sunucuda çalışmak için alabilirsiniz sadece zaman gibi.

Web tarayıcısı "Diğerleri" olarak kabul edilir? Ben harika bir fikir sağ, 777 benim klasörleri olduğu gibi bırakarak hissetmiyorum?

4 Cevap

Eğer o web tarayıcı yazabilirsiniz sunucu üzerinde klasörler oluşturmak gerekiyveyasa en az 775 kullanmak gerekebilir. Not bu mutlaka dosyaları oluşturmak için durum böyle değil. Aslında, muhtemelen dosya tüm 777 olmak istemiyveyaum.

Eğer sunucu (aka www-data) dizinleri oluşturmak zveyaunda kalmamak için isterseniz de php kodu içinde bash komutları kullanabilirsiniz ama yine de yazmak daha sonra www-data izin klasörlerin doğru izinleri yerleştirmeniz gerekir dizinlere dosyaları.

Lütfen iyelikleri kontrol etmeyin. Yukarıda www-data ait bazı kullanıcı ve grup tarafından sahip olunan bir klasörde dayanmaktadır. Ayrıca www-veri klasör sahipliğini ayarlamak için deneyebilirsiniz ama izin hala belirli bir kullanıcı için RWX olacaktır.

Ben bu kıvrık yolu değil umuyveyauz.

Eğer sunucu üzerinde apache çalışıyveya kim olduğunu bulmak yardımcı olabilir Komutları:

#top

gibi bir şey arayın:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                          
20610 www-data  20   0 36772  10m 4380 S    4  0.1   0:04.03 apache2 

veya

#ps aux | grep "apache"

look fveya something like

www-data 26898  0.0  0.0  34248  4076 ?        S    17:59   0:00 /usr/sbin/apache2 -k start

Web tarayıcısı "diğerleri" değil, web sunucusu olarak çalıştırmak kullanıcı, örneğin, httpd veya apache olarak kabul nesne değildir.

Ortak bir yöntem böylece bu 755 gibi izinleri sağlayarak, web sunucusu kullanıcıya kullanıcı ve / veya grup ayarlamak için dosyaları chown etmektir.

Örnek:

chown apache:apache ./example/

Bu veya üzerinde web sunucusu çalıştıran işletim sistemine bağlı olarak, yapmanız çalıştığınız ne interferring diğer güvenlik mekanizmaları olabilir, geçerli olmayabilir. (Bir süre için beni befudled) Bir göze batan örneği SELinux güvenlik sistemidir. Eğer / tmp yazabilirsiniz eğer görmeye çalışın. Diğer konular için bakamazsın eğer. 777 izinleri patlatma genel bir kural güvenlik açıklarına yol açabilir gibi.

Eğer sorun klasör mülkiyet yalan değil emin misin?

belki chown bu sorunu çözmek için doğru komut