Autor | Zpráva | ||
---|---|---|---|
Kwoky Profil * |
#1 · Zasláno: 24. 3. 2010, 00:06:38
Dobrý den,
mám poměrně hloupý problém. Z historických důvodů běží na našem pracovním serveru Apache 1.3 a PHP 4.0.5. Vytvořil jsem PHP kód, který mi pod PHPTriadem na jiném PC bez potíží funguje. Potíž je v tom, že na pracovním serveru kolabuje session_start. Vypisuje to chybovou hlášku: Warning: open(/tmp\sess_08d728ec3281be8d0082a65e7d460d78, O_RDWR) failed: m (2) in C:\apache\htdocs\intranet\admin.php on line 2 Kontroloval jsem php_info a session jsou povolené (a adresář /tmp asi nastavený). Zarazilo mě ale, že adresář /tmp ve složce s Apachem nebyl vůbec vytvořený. Po jeho ručním vytvoření je hláška stále stejná. Můžete mě prosím nasměrovat, kudy se mám vydat, aby fungovalo vytváření session i v práci? Děkuji za rady. |
||
Majkl578 Profil |
#2 · Zasláno: 24. 3. 2010, 00:15:15 · Upravil/a: Majkl578
V Linuxu musí být použito lomítko /, jiné nebude fungovat.
Adresář /tmp je globální adresář, není třeba ho vytvářet, ani nijak měnit. Nebo server běží na Windows Server? Pokud ano, bude třeba změnit session_save_path na platnou cestu systému Windows. |
||
Kwoky Profil * |
#3 · Zasláno: 24. 3. 2010, 09:08:39
Děkuji za radu. Jede to na Windows 2000 server.
Nastavil jsem místo "/tmp" "C:/apache/tmp" a trochu jsem se posunul dál. Chybová hláška se už sice neobjevuje a soubor se session se vytvoří, ale zůstává prázdný - 0 bytů. Na druhém počítači se do něj bez problému ukládají proměnné. Jaké údaje sem mám dát, aby se z nich dalo přijít na chybu? phpinfo? Všechna nastavení v sekci "session" jsou na obou počítačích stejná. |
||
nightfish Profil |
#4 · Zasláno: 24. 3. 2010, 09:15:37
jsou stejné i verze PHP?
|
||
Kwoky Profil * |
#5 · Zasláno: 24. 3. 2010, 10:02:02
Nejsou. Na pracovním serveru je 4.0.5, doma mám 4.1.1.
Teď jsem objevil, že nejde ještě další věc, takže to vypadá na něco hlubšího než jen nastavení jednoho parametru. Zkusím to prozkoumat a dám vědět. |
||
Kwoky Profil * |
#6 · Zasláno: 24. 3. 2010, 10:23:57
Tak chyba je v tom, že nefunguje předávání proměnných a to ani metodou POST ani GET. Dá se to nějak zapnout?
Ještě se mi prosím podívejte na tento kód. Doma jede, na pracovním serveru ne (nepředává proměnnou "$heslo"). To jen pro jistotu, jestli tam nemám nějakou "botu". Díky. $heslo =$_POST["heslo"]; if ($heslo=="password") {$_SESSION["sessislogged"] = 1;} if ($_SESSION["sessislogged"] != 1){ echo '<form action="admin.php" method="post"> Zadej heslo: <input type="password" value="" name="heslo"> </form>'; } |
||
nightfish Profil |
#7 · Zasláno: 24. 3. 2010, 10:39:08 · Upravil/a: nightfish
jak je nastavena direktiva register_long_arrays na obou serverech?
EDIT: beru zpět, tato direktiva existuje od 5.0.0 EDIT2: ááha, už to asi mám na http://www.php.net/manual/en/reserved.variables.post.php se píše: 4.1.0 Introduced $_POST that deprecated $HTTP_POST_VARS. Neboli česky: ve verzi 4.1.0 bylo zavedeno pole $_POST, v důsledku čehož bylo $HTTP_POST_VARS označeno za zastaralé. takže buď přepsat $_POST na $HTTP_POST_VARS (a dát si pozor na to, že $HTTP_POST_VARS není superglobální), nebo nacpat na server v práci novější PHP (stačí nějaká ta 4.1) |
||
Časová prodleva: 5 dní
|
|||
Kwoky Profil * |
#8 · Zasláno: 29. 3. 2010, 20:01:59
Nakonec jsem použil verzi 4.4.6 a vše se již chová zcela korektně a tak, jak jsem si přál. Děkuji za rady a považuji téma za uzavřené.
|
||
Časová prodleva: 16 let
|
0