Avatar billede larsgrau Seniormester
18. marts 2021 - 12:35 Der er 5 kommentarer

hvorfor vil den ikke lave filen

<?php
$file_pointer = "Loghjem_export.xml";
if(file_exists($file_pointer)){
    unlink($file_pointer);
}
$xml = new DomDocument("1.0","UTF-8",);
$xml->formatOutput = True;
       
        $main = $xml->createElement('<ns6:Elements xsi:type="ns6:SymbolData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');
        $main = $xml->appendChild($main);


$string_value = $xml->saveXML();
$xml->save("Loghjem_export.xml");
       

    $file = 'Loghjem_export.xml';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>
Avatar billede olsensweb.dk Ekspert
18. marts 2021 - 13:28 #1
hvad hedder det element du vil skabe ??
ref https://www.php.net/manual/en/domdocument.createelement.php
createElement ( string $localName , string $value = "" )

feks

$main = $xml->createElement('root', '<ns6:Elements xsi:type="ns6:SymbolData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');
Avatar billede olsensweb.dk Ekspert
18. marts 2021 - 13:31 #2
hvordan skal den xml fil se ud ?? (hvad indeholder den)
Avatar billede arne_v Ekspert
18. marts 2021 - 14:05 #3
Du skal sikre dig at PHP laver filen et sted hvor PHP har skrive adgang.

Af sikkerhedshensyn kan det godt vaere lidt tricky.

Men men men hvorfor vil du gemme en fil og saa sende den filden fil fremfor bare at sende XML uden at gemme paa disk?
Avatar billede arne_v Ekspert
18. marts 2021 - 14:10 #4
Med hensyn til create elemnt saa skal med namespace bruge:

$main = $xml->createElementNS('namespaceurl', 'ns6:Elements');

og bruge createAttributeNS til at lave type attributten.
Avatar billede bvirk Professor
18. marts 2021 - 20:26 #5
vedr. skabelse af fil:
Den bruger som webserver er skal have skrivetilladelse til mappen hvori filen ligger - noget som kan være enten som værende mappens ejer, mappen er i gruppe med gruppen "user webservers gruppe" eller mappen tillader alle at skrive (= flere ting med filer).
Det er det native konsept i linux - access control lists som er en tilføjelse til lagringsmediers access måder kan differentiere yderligere. De samme konsepter eksisterer i windows ntfs omend mange installationer på 'ikke server' maskiner har default så mange brugere ikke konfronteres dermed.

Alle filer og mapper der oploades (f.eks via ftp )tilhører den bruger som oploader hvilket er forskellig fra "bruger webserver"

På linux er rwx for read, write, execute 3 bit i den rækkefølge og owner, group, others tre bitgrupper også i den rækkefølgge  - altså
0777 (IKKE syvhundrede og syvoghalvfjers) er bitmasken for alle kan alt.
"chmod 0777 mappenavn" er kommandoen der der gør at php kan oprette filer i mappen.
Når man opretter mapper vha. php kode, så kan det være bekvemt at de også får chmod(mappenavn,0777) så det er muligt som almindlig website redigerende bruger at tilgå den - man har jo nok ikke root access på en købt hostning - dermed kan man spare sig at skrive et tool dertil men er så også snydt fornøjelsen ved at modtage mail om at automatisk udstyr på hostningen har fundet sager som er omdøbt f.eks. tool.php.malware
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





CIO
Årets CIO 2022: Nu skal Danmarks dygtigste CIO findes - er det dig? Eller kender du en, du vil indstille?