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
Tiedoston kirjoitusoikeudet kunnossa?
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.
is_writable ottaa parametrinä tiedostonimen, ei tiedostokahvaa. Siitä ensimmäinen ongelmasi johtuu.
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...?
Jos jotain kiinnostaa, niin löysin ratkaisun toiseen ongelmaan:
file_put_contents($file2, $xml->asXML());
Aihe on jo aika vanha, joten et voi enää vastata siihen.