Yerel dizin yalanladı PHP Chdir () izni

2 Cevap php

Ben sunucu üzerinde bir Python komut dosyası çalıştıran bir PHP komut dosyası üzerinde çalışıyorum. Benim sunucu Apache 2.2.3 ve PHP 5.1.6 ile CentOS 5.4 çalışıyor.

Bu PHP kodu:

chdir("/home/cjones/git/pywrapper");
$output = shell_exec("python /home/cjones/git/pywrapper/wrapper.py");

Bu bana bu hata verir:

Warning: chdir() [function.chdir]: Permission denied (errno 13) in /var/www/html/wrapper.php on line 20

Shell_exec çağrı olarak, ben de kullanarak çalıştı "cd / home / CJO ... && piton ...", ama bu işe yaramazsa ettik.

Senaryo böyle dizinden çalıştırmak gerekiyor ya da istediği dosyaları bulamıyor çünkü hatalar atma başlar. Bütün bunlardan başarısız olursa, ben sadece yerine göreli yolları kullanarak python komut dosyası içine yolları kodlamalısınız olabilir.

Bu ls -l için ~ / git ilgili çıkışı

drwxrwxr-x  5 cjones cjones 4096 Mar 23 08:45 pywrapper

Ben de chmod 777 ~/git/pywrapper denemiş ama işe yaramadı. Geçerli ayarı sadece 775 olduğunu.

Benim en iyi tahminim nedense apache kullanıcı benim kullanıcının ev dizinine erişimi yok ki? Ama izin nasıl bilmiyorum.

2 Cevap

Sadece 'git' ve 'pywrapper' dizinleri izinlerini değiştirmek için yeterli değil. Apache de 'cjones' erişebilir olması gerekir. Kullanıcıların ev dizinleri modu 0700 olmanın Çoğu Linux kutuları varsayılan. Eğer 0777 seviyesine izinleri gevşetin ve küresel erişim vermek istemiyorsanız, yeni bir gruba grup sahipliğini değiştirebilir ki sen ve apache payı ve hibe 0770 ev / cjones / için / home / cjones / git, ve / home / cjones / pywrapper

Bu web sitenizin dizin ev dizininde olabilir, ama örneğin onu sembolik bir link değil sahip olmak iyi bir fikirdir /var/www/mysite.

O dedi, chmod o+x ~; chmod o+x ~/git; #etc. dizinleri ve chmod o+r ~/git/pywrapper/blablablabla dosyalar python için Apache gibi çalıştırırken okumak mümkün olmalıdır olabilir.