Permission denied (fopen) v RobotLoader, obcasny problem s pristupem do cache

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jan.zimmermann
Člen | 3
+
0
-

Ahoj,

narazil jsem na problem. Na nasem produkcnim systemu (2 relativne vytizene webove servery) mame Nette. Jednou cca za tyden mi dojde na email chyba:

[2011-02-12 21:13:16] Warning: fopen(/var/tmp//c-Nette.RobotLoader/_69254f8351c4915beeded38fb64ed507): failed to open stream: Permission denied in /var/www/html/Nette/loader.php on line 1510

V logu o teto chybe neni zaznam. Nepodarilo se mi to nikdy rucne nasimulovat. Ze zdrojaku se mi zatim nepodarilo zjistit proc se to deje.

PHP se spusti pod vice uzivateli (http server, CLI). Pri rucnim spusteni http nebo cli zadny problem nevidim.

Tusi nekdo, kde by mohl byt problem?

Pouzite verze:
Nette Framework 0.9.7, PHP 5.2

JZ

Peter9
Člen | 69
+
0
-

asi si ho musíš locknúť :) (imho)

h4kuna
Backer | 740
+
0
-

Peter9 napsal(a):

asi si ho musíš locknúť :) (imho)

Nette samozřejmě zamiká soubory a jelikož to chvilku trvá než vznikne cache, tak se vytváří soubor pro kritickou část.

jan.zimmermann napsal(a):

[2011-02-12 21:13:16] Warning: fopen(/var/tmp//c-Nette.RobotLoader/_69254f8351c4915beeded38fb64ed507): failed to open stream: Permission denied in /var/www/html/Nette/loader.php on line 1510

Ahoj, chtěl jsem se na to podívat ale minifikováná verze která je ke stažení 0.9.7 má na tom řádku

<?php
extends
Object / NObject
?>

Dej sem vícero informací o kódu z té mini verze.
Jediný co mě napadá, když píšeš že to je spouštěno pod vícero učty, jestli opravdu všechny mají všechna potřebná práva?

jan.zimmermann
Člen | 3
+
0
-

matata: Dej sem vícero informací o kódu z té mini verze.

je tam neco takoveho:

<?php
class NFileStorage {
 //....
 function write($key,$data,array$dp){
  //...
  $handle=@fopen($cacheFile,'r+b');
  //...
  $handle=fopen($cacheFile,'wb');
  //...
 }
 //....
}
?>

Jediný co mě napadá, když píšeš že to je spouštěno pod vícero učty, jestli opravdu všechny mají všechna potřebná práva?

Jedna se o 2 uzivatele a pri rucnim spusteni se vse tvari ok. Prava pro ten adresar i jeho soubory jsou ok. Jedine co muze byt problem jsou prava k souborum, ktere tam vytvori Nette a hned je smaze (popr. jim prenastavi opravneni). Nez je ale smaze (nebo chmoduje), snazi se k nim pristoupit jiny php skript pod jinym uzivatelem. Je to malo pravdepodobne, ale na zatizenych serverech se to asi muze stat.

Dik za pomoc.

JZ