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:
<?php
			if (isset($_SESSION['login']) and ($_SESSION['login']) && ($_SESSION['id']==1))
			{
			echo '<h1>Új galéria létrehozása</h1>
            <form method="post" action="uj_galeria.php">
                <p>Galéria neve: <input type="text" name="galnev"  /></p>
                <p><input type="submit" value="Létrehozás" name="ok"  /></p>
            </form>';
				if (isset($_POST['ok']))
				{
					if (isset($_POST['galnev']) && !empty($_POST['galnev']))
					{
						$ekezetes=$_POST['galnev'];
						$mappa=strtolower($ekezetes);
						for ($i=0;$i<strlen($mappa);$i++)
						{
							switch($mappa[$i])
							{
								case 'á':$mappa[$i]='a';break;
								case 'é':$mappa[$i]='e';break;
								case 'í':$mappa[$i]='i';break;
								case 'ó': case 'ö': case 'ő': $mappa[$i]='o';break;
								case 'ú': case 'ü': case 'ű': $mappa[$i]='u';break;
								case ' ':$mappa[$i]='_';break;
							}
						}
						chdir('img/');
						if (@mkdir($mappa))
						{
							chdir($mappa);
							@mkdir('small');
							$f=fopen('galerianev.txt','w');
							fputs($f,$ekezetes);
							fclose($f);
							print '<p>Mappa elkészült! <a href="admin/kepfeltolt.php?mappa='.$mappa.'">Képek feltöltése</a></p>';
						}
						else
						{
							print '<p>A galéria már létezik</p>';	
						}
					}
					else
					{
						print '<p>Galérianév megadása kötelező!</p>';	
					}
				}
			}
			else
			{
				echo '<p>Rossz helyen jársz!</p>';
			}
			?>
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

if(mkdir(...)){ 
           ...
} else {
   print_r(error_get_last());
}
formában használni, amíg hibát keresel (remélem, erre is működik).
Mellesleg a

 if (@mkdir($mappa))  
                         {  
                             chdir($mappa);  
                             @mkdir('small');  
                             $f=fopen('galerianev.txt','w');  
                             fputs($f,$ekezetes);  
                             fclose($f);  
                             print '<p>Mappa elkészült! <a href="admin/kepfeltolt.php?mappa='.$mappa.'">Képek feltöltése</a></p>';  
                         }  
                         else  
                         {  
                             print '<p>A galéria már létezik</p>';     
                         }  
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

<?php
clearstatcache();
echo "cache cleared<br>";
if(mkdir("teszt")) { echo "OK"; }
else { echo "Hiba!<br>"; print_r(error_get_last()); rmdir("teszt"); echo "törölve"; }
?>
------------------

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.