ugrás a tartalomhoz

XML fájl készítés

hirlapom · 2006. Május. 28. (V), 16.07
Sziasztok!

Van egy scriptem, de nem készíti el a fájlt pedig a filename és a content változóban ott vannak az adatok. Mi a gond?
  1. <?php  
  2.   
  3. $filename$_POST["filename"];  
  4. //$filename="http://www.vmi.hu/user_xml/".$filename;  
  5. $content$_POST["content"];  
  6. //$filename  
  7.   
  8. if (file_exists($filename)){  
  9. // Ha már létezik  
  10.   $fa = fopen ($filename"w");  
  11.   fwrite($fa$content);  
  12.   fclose ($fa);  
  13. else {  
  14. // Ha még nem létezik  
  15.   touch($filename);  
  16.   chmod($filename, 0644);  
  17.   $fa = fopen ($filename"w");  
  18.   fwrite($fa$content);  
  19.   fclose ($fa);  
  20. }  
  21. print "&out=$filename";  
  22. ?>  
 
1

Jogosultságok?

krey · 2006. Május. 28. (V), 16.25
Így első ránézésre a script jónak tűnik, ha nem készíti el a fájlt, akkor lehet, hogy nem tudja megcsinálni, nincs hely a merevlemezen, vagy nincs jogosultságod hozzá.
Próbáld így:
  1. <?  
  2. if (!touch($filename))  
  3.    die("Nem sikerült létrehozni a fájlt");  
  4. else {  
  5.    // Műveletek  
  6. }  
  7. ?>  
krey

ps. Érdemes bekapcsolni a hibajelzést
3

igazad van...

hirlapom · 2006. Május. 28. (V), 16.31
Valóban nem tudja létrehozni. Ennek mi lehet az oka?
4

Ismét

krey · 2006. Május. 28. (V), 16.34
Mondjuk már leírtam, de elmondhatom mégegyszer
  1. Nincs jogosultságod
  2. Nincs szabad hely

Érdemes kapcsolatba lépni a tárhely szolgáltatóval.

krey
5

hozzáférés

hirlapom · 2006. Május. 28. (V), 16.40
Mondjuk ez furcsa, miért lehet az, hogy a saját tárhelyemhez nincs jogosultságom? A szolgáltató mit tud csinálni?
6

nem jog. JOG!

vbence · 2006. Május. 28. (V), 19.36
Furcsálom, hogy tanult kollégám nem hívta fel figyelmedet a következőre:
Az első és legeslegeslegfontosabb dolog a php fájlkezeléssel kapcsolatban az, hogy a php nem a te jogaiddal, a te usered alatt fut, hanem a webszerver userével (www, apache, www-data, akármi). (Ez csak 90%ban van így.) A te feladatod, hogy létrehozd a könyvtáradat, majd az ftp progamoddal (total commander, stb) megadd a "write by others" jogot. Shellből:
chmod o+w konyvtarneve
Ezután már több esélyed van.

Egy tanács a végére:
Kikapcsolt hibajelentéssel nem lehet fejleszteni. Ha a szerveren alapból ki van kapcsolva, kapcsold be egy fügvénnyel (fejből nemtudom, a php dokumentációban bennevan).


Ja.. és a POST[filename] nagyon nem biztonságos ám...
7

műkszik

hirlapom · 2006. Május. 28. (V), 20.27
Ahogy mondod. Utánna kapcsoltam is. Köszi a segítséget!
2

XML fájl készítés

Anonymous · 2006. Május. 28. (V), 16.30
Ez az egész if-es szerkezet felesleges, ugyanis a fopen parancs létrehozza a file-t, akkor is, ha nem létezik. Ha igen, akkor meg felülírja a tartalmát.
Inkább a hibaüzenetekre fordíts nagyobb figyelmet, az megmondja, hogy mi a hiba.
  1. <?php  
  2. $filename$_POST["filename"];  
  3. $content$_POST["content"];  
  4.   
  5. $fa = fopen ($filename"w");  
  6. fwrite($fa$content);  
  7. fclose ($fa);  
  8.   
  9. print "&out=$filename";  
  10. ?>  
Ha ezt futtatod, és az error_reporting be van kapcsolva, ki fogja írni a hibaüzenetet. A kész programban persze kell majd valamilyen hibakezelést beépítened, hogy a felhasználó ne lássa a php hibaüzenetét.

Gyulus
8

kódolás

hirlapom · 2006. Május. 28. (V), 20.34
A kövekező probléma merült még fel:

Amikor megkapja az xml fájl tartalmát a php, kicsit megváltozik.
$content= $_POST["content"];

Amit küldtem eredetileg a php-nak:
<us identity="bla">
<e link="http://link.hu" tit="bla" />
</us>

Amit beleír a fájlba a php:
<us identity=\"bla\">
<e link=\"http://link.hu\" tit=\"bla\" />
</us>

Sajnos tuti kódolási probléma, de ezt biztosan egyszerűen meg lehet oldani.
Elvileg utf-kódolásba küldtem a php-nak a content-et.
Előre is kösz.
9

magic_quotes

erenon · 2006. Május. 28. (V), 21.18
Szerintem ezt a PHP egyik kedves beállítása, a magic_quotes teszi be. (php.ini-ben lehet ügyeskedni vele)
Nem hallottam még olyan karakterkódolási problémáról, hogy \-ezi a "-okat.
10

slash

hirlapom · 2006. Május. 28. (V), 21.27
Mivel ftp ezért php.ini-hez nemsok közöm van. Egyéb módszer?
11

ini_set?

janoszen · 2006. Május. 28. (V), 21.38
Az ini_set nem segít?
12

hát

erenon · 2006. Május. 28. (V), 22.07
valószínüleg ingyenese (az?) tárhelyen se ini_set, se más trükk, de valami talán, bár ez nagyon nagyon lassú:
str_replace fv, \" -> "
És nem is 100%-os a minősége.
Vagypedig stripslashes();
13

arigato

hirlapom · 2006. Május. 28. (V), 22.22
stripslashes(); tökéletes. Köszi!