Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP fopen() ei toimi "w" optiolla

stars10 [26.01.2007 12:56:31]

#

Itselläni on outo ongelma, eli

$somecontent = "Add this to the file\n";
$file = "buildtester_config2.xml";

$filex = fopen($file, "w");
fwrite($filex, $somecontent);
if (is_writable($filex)) {

Saan laitettua tuon tekstistringing luomaani fileen, mutta is_writable palauttaa error statuksen? Lisäksi jos yritänkin laittaa $somecontent:in tilalla sisällöksi jonkun XML-dokun, niin luotuun tiedostoon tulee vain tyhjiä rivejä...? Olen selaillut noita PHP-oppaita, mutta en löydä ratkaisua tähän. Onko serverin asennuksissa jotain vialla ja pitääkö fwrite:a käyttää XML-dokumentteihin jollain erityylillä...?

- Ville

Lebe80 [26.01.2007 13:19:37]

#

Tiedoston kirjoitusoikeudet kunnossa?

stars10 [26.01.2007 13:56:25]

#

Annoin chmod 777 "tiedosto" eikä sillä tunnu olevan merkitystä. Tuo if-haara menee aina else-haaraan, eli tämä ei ole tosi (is_writable($filex)). Voiko kyse olla jostain Apache-serverin asetuksista, että esim. var/www/html/ -hakemistoon on kielletty tallentamasta netin kautta mitään? Toisaalta tuo alkuosa toimii:

$somecontent = "Add this to the file\n";
$file  = "buildtester_config2.xml";

$filex = fopen($file, "w");
fwrite($filex, $somecontent);

Eli, jos tämän jälkeen katson $file:n sisältöä, niin siellä on tuo $somecontent, mutta jos taas yritän laittaakin write:llä XML-tiedoston:

$file  = "buildtester_config2.xml";
$file2  = "buildtester_config.xml";

$filex = fopen($file, "w");
$filey = fopen($file2, "r");
fwrite($filex, $filey);

Niin tuon buildtester_config2.xml sisältönä lukee "Resource id #5"? Pitääkö XML-tiedostot kopioida jotenkin toiseen tyyliin? Tarkoituksena on tuossa koodinpätkässä aikaisemmin avata olemassa oleva XML-tiedosto, lisätä/poistaa elementtejä ja atribuutteja ja tallentaa lopulta muuttunut tiedosto. Siihen tarvitsen jonkun keinon tallentaa muuttuneen XML-tiedoston. Olen aluksi avannut sen:

$xml = simplexml_load_file('buildtester_config.xml');

Sitten tehnyt muutoksia tuohon $xml:

$result = $xml->xpath('subsystem');
    while(list( , $node) = each($result)) {
         $reportingAddressTEST = $node->reporting->addChild('reportingAddressTEST');

Jne.

kayttaja-2791 [26.01.2007 14:16:24]

#

is_writable ottaa parametrinä tiedostonimen, ei tiedostokahvaa. Siitä ensimmäinen ongelmasi johtuu.

stars10 [26.01.2007 14:28:31]

#

Kiitos, tuo ensimmäinen ongelma ratkesi laittamalla if (is_writable($file)) Mutta XML-tiedosto ei kopioidu oikein tuon fwriten avulla. Osaako joku neuvoa miten se pitää kopioida...?

stars10 [26.01.2007 16:05:57]

#

Jos jotain kiinnostaa, niin löysin ratkaisun toiseen ongelmaan:

file_put_contents($file2, $xml->asXML());

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta