ugrás a tartalomhoz

Különös hiba! Localhoston jó byethoston nem

aky22 · 2011. Jún. 5. (V), 17.46
Hali! Érdekes problémába ütköztem. Van egy galéria készítőm aminél az első lépés a mappa létrehozása. Localhoston minden szép és jó de ha felrakom élesben byethost-ra akkor nem hooza létre a mappát vagy létrehozza csak késöbb és amit ki kéne írnia azt nem teszi meg. itt a kód:
  1. <?php  
  2.             if (isset($_SESSION['login']) and ($_SESSION['login']) && ($_SESSION['id']==1))  
  3.             {  
  4.             echo '<h1>Új galéria létrehozása</h1>  
  5.             <form method="post" action="uj_galeria.php">  
  6.                 <p>Galéria neve: <input type="text" name="galnev"  /></p>  
  7.                 <p><input type="submit" value="Létrehozás" name="ok"  /></p>  
  8.             </form>';  
  9.                 if (isset($_POST['ok']))  
  10.                 {  
  11.                     if (isset($_POST['galnev']) && !emptyempty($_POST['galnev']))  
  12.                     {  
  13.                         $ekezetes=$_POST['galnev'];  
  14.                         $mappa=strtolower($ekezetes);  
  15.                         for ($i=0;$i<strlen($mappa);$i++)  
  16.                         {  
  17.                             switch($mappa[$i])  
  18.                             {  
  19.                                 case 'á':$mappa[$i]='a';break;  
  20.                                 case 'é':$mappa[$i]='e';break;  
  21.                                 case 'í':$mappa[$i]='i';break;  
  22.                                 case 'ó'case 'ö'case 'ő'$mappa[$i]='o';break;  
  23.                                 case 'ú'case 'ü'case 'ű'$mappa[$i]='u';break;  
  24.                                 case ' ':$mappa[$i]='_';break;  
  25.                             }  
  26.                         }  
  27.                         chdir('img/');  
  28.                         if (@mkdir($mappa))  
  29.                         {  
  30.                             chdir($mappa);  
  31.                             @mkdir('small');  
  32.                             $f=fopen('galerianev.txt','w');  
  33.                             fputs($f,$ekezetes);  
  34.                             fclose($f);  
  35.                             print '<p>Mappa elkészült! <a href="admin/kepfeltolt.php?mappa='.$mappa.'">Képek feltöltése</a></p>';  
  36.                         }  
  37.                         else  
  38.                         {  
  39.                             print '<p>A galéria már létezik</p>';     
  40.                         }  
  41.                     }  
  42.                     else  
  43.                     {  
  44.                         print '<p>Galérianév megadása kötelező!</p>';     
  45.                     }  
  46.                 }  
  47.             }  
  48.             else  
  49.             {  
  50.                 echo '<p>Rossz helyen jársz!</p>';  
  51.             }  
  52.             ?>  
Mielött kérdeznétek az img mappa jogait 777-re állítottam.
 
1

http://www.php.net/manual/en/

H.Z. v2 · 2011. Jún. 5. (V), 18.26
http://www.php.net/manual/en/function.mkdir.php itt van egy megjegyzés, miszerint nem árt használni a clearstatcache()-t, mielőtt fájlrendszeren matató függvényt használsz.


Konkrétan:
julius - grantzau - c-o-m 08-Mar-2011 04:10
Remember to use clearstatcache()

... when working with filesystem functions.

Otherwise, as an example, you can get an error creating a folder (using mkdir) just after deleting it (using rmdir).
2

De nem az a baj kipróbáltam

aky22 · 2011. Jún. 5. (V), 21.11
De nem az a baj kipróbáltam de így se jó. Meg az is fura hogy localhoston meg megy rendesen
4

Akkor marad amit proclub is

H.Z. v2 · 2011. Jún. 6. (H), 05.47
Akkor marad amit proclub is írt: kiveszed a @-t legalább az mkdir elől + javasolnám az összes mkdir-t
  1. if(mkdir(...)){   
  2.            ...  
  3. else {  
  4.    print_r(error_get_last());  
  5. }  
formában használni, amíg hibát keresel (remélem, erre is működik).
Mellesleg a
  1. if (@mkdir($mappa))    
  2.                         {    
  3.                             chdir($mappa);    
  4.                             @mkdir('small');    
  5.                             $f=fopen('galerianev.txt','w');    
  6.                             fputs($f,$ekezetes);    
  7.                             fclose($f);    
  8.                             print '<p>Mappa elkészült! <a href="admin/kepfeltolt.php?mappa='.$mappa.'">Képek feltöltése</a></p>';    
  9.                         }    
  10.                         else    
  11.                         {    
  12.                             print '<p>A galéria már létezik</p>';       
  13.                         }    
nem feltétlenül igaz: az mkdir egyéb hiba esetén is FALSE értékkel tér vissza, nem csak akkor, ha már létező directory-t akarsz újra létrehozni.

Annak meg nincs sok jelentősége, hogy localhost-on működik. A szolgáltatódnál lehet (biztos), hogy másképp van konfigurálva a web szerver is, meg a PHP is. Nálad egyetlen gépen fut, az említett szolgáltatónál valószínűleg egy sok gépes clusteren stb.
5

De nem dob hibát így sem. És

aky22 · 2011. Jún. 6. (H), 06.52
De nem dob hibát így sem. És van olyan hogy létrehozza a mappát de akkor egyszerre legalább 2-őt amiket már kb. 3-al ezelőtt futtattam le, csak nem írja ki hogy késsz.
6

Elkészül, de amikor

H.Z. v2 · 2011. Jún. 6. (H), 09.39
Elkészül, de amikor hivatkoznál rá, nem látszik? Később mégis megjelenik?
Lehet, hogy jelezni kellene a supportnak. Kísértetiesen emlékeztet arra a jelenségre, amikor a cluster tagok nincsenek szinkronban.
De várj vele egy kicsit, hátha lesz valakinek jobb ötlete!

----------------
update: regisztráltam én is, kipróbáltam, nekem gond nélkül megy. Akár úgy is, hogy létrehozom, ha hibára fut, akkor törlöm.
http://byebye.byethost12.com/index.php
  1. <?php  
  2. clearstatcache();  
  3. echo "cache cleared<br>";  
  4. if(mkdir("teszt")) { echo "OK"; }  
  5. else { echo "Hiba!<br>"; print_r(error_get_last()); rmdir("teszt"); echo "törölve"; }  
  6. ?>  
------------------

Lehet, hogy felejtős a szolgáltató. Használni még nem használtam, de pl. a phpmyadmin működése elég "érdekes" (mondhatni, erősen bugosnak tűnik)
7

Én is a szolgáltatót

aky22 · 2011. Jún. 6. (H), 15.09
Én is a szolgáltatót sejtettem főleg hogy eddig még a szerveren is működött. (esetleg nem tudsz valami jobb szolgáltatót?? webhost-ot próbáltam de az nem jó)
8

Sajnos nem. Ingyeneset

H.Z. v2 · 2011. Jún. 6. (H), 16.11
Sajnos nem. Ingyeneset biztosan nem, fizetőset meg nem merek ajánlani, mivel csak szóbeli "tapasztalatom" van, gyakorlati nincs.
A freeweb.hu nekem jónak tűnt, de sem PDO, sem mysqli interface-ük nincs a MySQL-hez, így nálam az is kiesett. Ha lesz valami publikálásra alkalmas cuccom, majd keresek valami olcsóbb, fizetős szolgáltatót.
3

Hiba kiírás

janoszen · 2011. Jún. 5. (V), 23.23
Először is légyszi nézzük meg a kódot bekapcsolt noticeokkal és warningokkal. Ha van hibaüzenet, akkor azt másold be. Másrészt az mkdir elől és a többi helyről vegyük ki a @ operátort, mert attól jól nem fogjuk látni, hogy mi a baj.