PHP oturum dosyaları İzinler

4 Cevap php

Ben bu iki etki farklı ftp kullanıcılar (user1, kullanıcı2) linux ortamında aynı grubun (kullanıcı grubu) ait olan bir etki domain.com ve alt etki alanını sub.domain.com var. Sonunda ben de etki (bir canlı ve diğeri çevreyi test ediyor) oturumları kullandığı aynı PHP uygulama var.

Ben etki ilk gitmeden sub.domain.com erişirken kullanıcı grubu: ben sub.domain.com ilk gitmeden domain.com gittiğinizde, PHP oturum dosyası uygun izinlere 600 ve user1 ile varsayılan klasör / tmp / oluşturulur . kullanıcı grubu: com, bir dosya izinleri 600 ve user2 ile oluşturulur.

Tüm tarayıcılarda ama IE (bu odaklanmak etmeyiniz) için mükemmeldir. Ne öğrendim ben sub.domain.com erişmek ve daha sonra deneyin domain.com PHP aynı oturum dosyasını okumaya çalışır ama izinleri ve sayfa yok olduğunda süresiz yükleniyor olmasıdır. User1 olarak dosyanın sahipliğini değiştirme domain.com iş yapar ama çalışmaktan sub.domain.com engeller.

Apache veya PHP oturumları için farklı dosyaları oluşturmak yapmak veya her ikisi alanlarından onları erişilebilir yapmak.

P.S. Like I said for some weird reason this happens only for IE and the error message from PHP is: Uncaught PHP Error: session_start() [function.session-start]: open(/tmp/sess_t1..., O_RDWR) failed: Permission denied (13) in file xxx.php on line 46 on line on line 46 is session_start();

Bu herhangi bir tavsiye için teşekkür ederiz.

4 Cevap

Ben sadece bu aynı problem vardı. IE7 ve IE8 onlar için oturum verileri talep ediyoruz etki duyuran uygunsuz bir yol var çünkü Apache IE7 ve IE8 için oturum verileri döndürür yolu ile ilgili bir sorun gibi görünüyor, ama büyük olasılıkla.

İşte benim senaryo:

Iki etki ile Apache 1.3 Koşu, her biri kendi kullanıcıları ile kendi hesabı var:

Domain: mycompany.com 
Session path: /tmp/
Webserver user: mycompanycom

Domain: support.mycompany.com 
Session path: /tmp/
Webserver user: nobody

İşte Firefox / Safari / Chrome ile normal bir ziyareti sırasında ne olur:

  1. Ben mycompany.com ziyaret ve aktif dosya /tmp/ mycompanycom kullanıcı tarafından sahip olunan oluşturulur.
  2. Sonra support.mycompany.com ziyaret, ve ikinci seans dosya /tmp/ nobody kullanıcı tarafından sahip olunan oluşturulur.
  3. Apache karışık almaz ve doğru oturum dosyaları iade edilir

Ancak, burada IE7 ve IE8 ile bir ziyareti sırasında ne olur:

  1. Ben mycompany.com ziyaret ve aktif dosya /tmp/ mycompanycom kullanıcı tarafından sahip olunan oluşturulur.
  2. Sonra support.mycompany.com ziyaret ve yerine /tmp/ nobody, Apache mycompany.com için oturum dosya dönmek için çalışır kullanıcı tarafından sahip olunan ikinci oturum dosyası oluşturma.
  3. Mycompany.com için oturum dosyası nobody erişemez kullanıcı olarak çalışan, kullanıcı mycompanycom, böylece web sunucusu aittir. İzin reddedildi.

Çözelti /tmp/ support.mycompany.com için depolanan oturum verilerini ayırmak için ayrı bir dizin oluşturmak için, diğerleri de söylediğim gibi oldu:

mkdir /tmp/mycompany
chown nobody:nobody /tmp/mycompany

Sonra support.mycompany.com için kök web dizininde bir .htaccess dosyasına aşağıdaki ekledi:

php_value session.save_path '/tmp/mycompany'

Ve son olarak, yeni bir oturum yolu hemen alışması sağlamak için /tmp/ varolan herhangi bir oturum verileri kaldırıldı:

rm -f /tmp/sess_*

Ve işte bu! Şimdi IE7 ve IE8 düzgün çalışmıyor.

Ben bu sorun ile nasıl Apache IE7 ve IE8 isteği oturum verileri. Ilgisi var eminim Muhtemelen SONRA ilk istek oturum mycompany.com için veri ve ikinci adres çubuğuna girilen tek doman olmasına rağmen, support.mycompany.com için oturum verileri talep.

Bu sorun için en iyi yaklaşım olduğunu ancak PHP, her etki alanı için farklı bir dizinde oturum dosyaları kaydetmek sahip deneyebilirsiniz eğer emin değil.

session_save_path() belgelerine bir göz atın.

Keep in mind that you must set it BEFORE initializing the session.
Ideally, that should be one of the first things your script does.

Eğer IE sorunu tetikliyor emin misiniz?

Tarayıcı sadece PHP (HTTPD) işlem oturum dosyalarına erişimi, oturum dosyalarının doğrudan herhangi bir erişim yok.

Tek bir tarayıcı diğerine karşı PHP günlüğüne farklı hata mesajları vermelidir neden görmüyorum.

Ben iki ayrı sorunları ile ilgili olabilir düşünüyorum.

. Tek çözüm, her subdomain htaccess dosyasına bu eklemek için:

php_value session.save_path '/path/to/a/writeable/folder'

Sonra her subdomain kendi klasörüne yazma iznine sahip olduğundan emin olun.