PHP Version und DOM

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Dideli

Benutzer
Registriert
18. Feb. 2010
Beiträge
8
Reaktionspunkte
0
Punkte
0
Habe eine Webseite die auf XML und DOM aufgebaut ist. -Leider funktioniert sie auf der DiskStation nicht, da die PHP Version scheinbar dies nicht unterstützt. Ist es nicht möglich eine normale PHP Version z.B 5.3.1 auf die DiskStation zu laden? Habe die Station eigentlich wegen der Webserverfunktionalität gekauft und nun kann ich sie nicht verwenden! Ach es ist die DS110j.
 
Ich habe auch eine 110j und bei mir läuft (mal abgesehen davon, dass sie momentan gar nicht mehr geht;)) PHP, MySQL, DOM etc alles problemlos.

Edit: kurz nachgeschaut: PHP Version 5.2.10
 
Auf meiner DS207+ (Firmware-Stand: 844) läuft PHP 5.2.6. Dies enthält - nach langer Zeit des Wartens - auch DOM und die libxml:

'./configure.syno' '--host=armle-unknown-linux' '--target=armle-unknown-linux' '--build=i686-pc-linux' '--with-apxs2=/usr/local/apache/bin/apxs' '--prefix=/usr/syno/php' '--with-config-file-path=/usr/syno/etc' '--with-pgsql=/usr/syno/pgsql' '--with-mysql=/usr/syno/mysql' '--with-mysqli=/usr/syno/mysql/bin/mysql_config' '--with-iconv=/usr/syno/libiconv' '--enable-mbstring' '--with-gd' '--enable-gd-native-ttf' '--with-zlib-dir=/usr/local/arm-marvell-linux-gnu' '--with-png-dir=/usr/local/arm-marvell-linux-gnu' '--with-jpeg-dir=/usr/local/arm-marvell-linux-gnu' '--enable-exif' '--with-imap=../imap-2007e' '--enable-calendar' '--enable-ftp' '--enable-sockets' '--with-libexpat-dir=/usr/syno' '--enable-dom' '--with-libxml-dir=/source/libxml2-2.6.32' '--enable-simplexml' '--enable-libxml' '--enable-xmlreader' '--enable-xmlwriter' '--disable-ipv6' '--disable-pdo' '--without-pdo-sqlite' '--without-sqlite' '--with-curl=/usr/syno' '--disable-cgi' '--enable-bcmath' '--with-gettext'

Auf meiner DS509+ (Firmware-Stand: 1118 (Beta)) läuft PHP 5.2.10. Dies enthält auch DOM und die libxml:

'./configure.syno' '--host=powerpc-unknown-linux' '--target=powerpc-unknown-linux' '--build=i686-pc-linux' '--with-apxs2=/usr/local/apache/bin/apxs' '--prefix=/usr/syno/php' '--with-config-file-path=/usr/syno/etc' '--with-pgsql=/usr/syno/pgsql' '--with-mysql=/usr/syno/mysql' '--with-mysqli=/usr/syno/mysql/bin/mysql_config' '--with-iconv=/usr/syno/libiconv' '--with-pdo-mysql=/usr/syno/mysql' '--with-pdo-pgsql=/usr/syno/pgsql' '--enable-mbstring' '--with-gd' '--with-freetype-dir=/usr/syno' '--enable-gd-native-ttf' '--with-zlib-dir=/usr/local/powerpc-linux-gnuspe' '--with-png-dir=/usr/local/powerpc-linux-gnuspe' '--with-jpeg-dir=/usr/local/powerpc-linux-gnuspe' '--enable-exif' '--with-imap=../imap-2007e' '--enable-calendar' '--enable-ftp' '--enable-sockets' '--with-libexpat-dir=/usr/syno' '--enable-dom' '--with-libxml-dir=/source/libxml2-2.6.32' '--enable-simplexml' '--enable-libxml' '--enable-xmlreader' '--enable-xmlwriter' '--disable-ipv6' '--without-pdo-sqlite' '--without-sqlite' '--with-curl=/usr/syno' '--disable-cgi' '--enable-bcmath' '--with-openssl=/usr/syno' '--with-gettext'

Kontrolliere einfach mal, ob das bei dir auch so ist. Wenn nicht, dann schreibe dem Synology-Support eine E-Mail, dass sie dir eine Firmware-Version zusenden, die das auch enthält.

Selbstverständlich kannst auch per IPKG dir einen weiteren Apachen installieren. Dies ist weder kompliziert noch schmälert es in irgendeiner Weise die Performance. Habe ich auch laufen wegen anderer Dinge ... Per IPKG gibt es auch noch andere Web-Server ... alles was das Herz begehrt.

Itari
 
Naja die Betaversion hab ich noch nicht probiert. Auf jedenfall hab ich mit ipkg den Apache neu eingebunden. Das hat auch funktioniert! Nur ein PHP Aufruf wie

$dom->load('data/Themen.xml');

Erzeugt eine Fehlermeldung. Leider weiss ich jetzt aber nicht mehr wie die genau lautet. Habe die Webseite vorher auf einem normalen Rechner mit XAMPP am laufen gehabt. Dort hat's einwandrei funktioniert. Naja dann versuche ich mal die Beta aus, mal sehen ob's geht. Danke für die schnelle Antwort von euch!

Was ich noch fragen wollte, gibts ein Tool ,wo man die ini's gescheit ohne Terminal editieren kann?
 
Was ich noch fragen wollte, gibts ein Tool ,wo man die ini's gescheit ohne Terminal editieren kann?

Webeditor oder jetzt neu das Admin Tool (schau unter 3rdparty-Anwendungen)

Itari
 
Ja danke dir!

Habe die Beta installiert, leider habe ich immer noch das gleiche Problem!
Die PHP-Fehlermeldung lautet folgendermassen:

Warning: DOMDocument::load() [domdocument.load]: I/O warning : failed to load external entity

Der Aufruf geschieht folgendermassen:

function Load_Thema ($tnumber,$bname) {

$dom = new DOMDocument();
$domBible = new DOMDocument();
$dom->preserveWhiteSpace = false;
$domBible->preserveWhiteSpace = false;
$dom->load('data/Themen.xml');
$domBible->load('data/NW1986.xml');
$element = new DomXPath($dom);
$element2 = new DomXPath($domBible);

$i = 1;
$content = "";

// Thema-Titel ermitteln
$thema = $element->query('//thema[' . $tnumber . ']/@title');
$thema = $thema->item(0)->value;

// Definitions-Text ermitteln
$nodelist = $element->query('//thema[' . $tnumber . ']/*');

// Thema-Titel in Ausgabevariabel speichern
$content = 'Thema:  ' . $thema . '$$';

foreach ($nodelist as $node){

// Ermitteln der Art der Unterknoten (definition, bs)
if($node->nodeName == 'definition'){
$content = $content . '<div id="definition">' . $node->nodeValue . '</div>';
}
elseif($node->nodeName == 'bs'){
$content = $content . '<div id="bibelstelle"><table>';
$b++;
$bs = $node->nodeValue;
$split = explode(":", trim($bs));
$bs1 = $split[0] . ' ' . $split[1] . ':' . $split[2];

if(strpos($bs,"-") == false){
$vers = $element2->query('//BIBLEBOOK[@bsname=\'' . $split[0] . '\']/CHAPTER[@cnumber=\'' . $split[1] . '\']/VERS[@vnumber=\'' . $split[2] . '\']');
$content = $content . '<tr><td id="bs"><b>' . $bs1 . '</b>' . '</td><td id="bt">' . $vers->item(0)->firstChild->data . '</td></tr>';
}
else{
$bs1 = $split[0] . ' ' . $split[1] . ':';
$versnumber = explode("-", $split[2]);
$v = $versnumber[0];
$w = $versnumber[1];
while ($v <= $w) {
$vers = $element2->query('//BIBLEBOOK[@bsname=\'' . $split[0] . '\']/CHAPTER[@cnumber=\'' . $split[1] . '\']/VERS[@vnumber=\'' . $v . '\']');
$content = $content . '<tr><td id="bs"><b>' . $bs1 . $v . '</b>' . '</td><td id="bt">' . $vers->item(0)->firstChild->data . '</td></tr>';
$v++;
}
}
$content = $content . '</table></div>';
}
}

// Alle State-Einträge ermitteln
$states = $element->query('//thema[' . $tnumber . ']/state/*');

// Schleife für alle State-Einträge
foreach ($states as $state) {
$b = 0;

// Selektion aller States
$nodelist = $element->query('//thema[' . $tnumber . ']/state[' . $i . ']/*');

// Schleife über alle State-Unterknoten
foreach ($nodelist as $node){

// Ermitteln der Art der Unterknoten (title, note, bs)
if($node->nodeName == 'title'){
$content = $content . '<h4>' . $node->nodeValue . '</h4>';
}
elseif($node->nodeName == 'note'){
$content = $content . '<div id="textnote">' . $node->nodeValue . '</div>';
}
elseif($node->nodeName == 'bs'){
$content = $content . '<div id="bibelstelle"><table>';
$b++;
$bs = $node->nodeValue;
$split = explode(":", trim($bs));
$bs1 = $split[0] . ' ' . $split[1] . ':' . $split[2];

if(strpos($bs,"-") == false){
$vers = $element2->query('//BIBLEBOOK[@bsname=\'' . $split[0] . '\']/CHAPTER[@cnumber=\'' . $split[1] . '\']/VERS[@vnumber=\'' . $split[2] . '\']');
$content = $content . '<tr><td id="bs"><b>' . $bs1 . '</b>' . '</td><td id="bt">' . $vers->item(0)->firstChild->data . '</td></tr>';
}
else{
$bs1 = $split[0] . ' ' . $split[1] . ':';
$versnumber = explode("-", $split[2]);
$v = $versnumber[0];
$w = $versnumber[1];
while ($v <= $w) {
$vers = $element2->query('//BIBLEBOOK[@bsname=\'' . $split[0] . '\']/CHAPTER[@cnumber=\'' . $split[1] . '\']/VERS[@vnumber=\'' . $v . '\']');
$content = $content . '<tr><td id="bs"><b>' . $bs1 . $v . '</b>' . '</td><td id="bt">' . $vers->item(0)->firstChild->data . '</td></tr>';
$v++;
}
}
$content = $content . '</table></div>';
}
}
$i++;
}
echo $content;
}

Wie gesagt mit XAMPP funktioniert es einwandfrei. Verstehe einfach nicht warum dies mit der DiskStation net geht!
 
Zuletzt bearbeitet:
Also hab es kurz eingerichtet.

Unter http://www.onlinebibelstudium.ch kommst du auf das Web das auf dem XAMPP Server läuft.
Und unter http://www.onlinebibelstudium.ch:8080 auf das Web auf der DiskStation.

Eigentlich funktioniert das DOM ja auch, nur bei den Themen nicht und das kapiere ich echt net. Ich denke, das in der PHP Version des NAS einfach etwas anderst ist oder vielleicht ein Bug mitspielt.
 
Wenn ich das richtig sehe, dann lädst du XML-Dateien ein. Dateinamen unter Windows können groß und klein geschrieben werden und sind trotzdem identisch. Das ist anders unter Linux ('Themen' ungleich 'themen' ungleich 'THEMEN'). Kontrolliere einfach mal ganz genau, die Schreibweise. Falls es daran nicht liegt, könnten es noch die Zugriffsrechte der Dateien oder Verzeichnisse sein oder die Pfade stimmen nicht genau überein ... XML und DOM auf der DS sind es mit größter Wahrscheinlichkeit nicht das Problem.

Itari
 
Itari du bist der Beste echt! :-). Danke dir tausendmal! Themen.xml ist tatsächlich net das gleiche wie THEMEN.xml! Ab sofort werde ich mir angewöhnen alles klein zu schreiben.

PS: Hättest dir jetzt ein Nachtessen verdient!
 
Itari du bist der Beste echt! :-). Danke dir tausendmal! Themen.xml ist tatsächlich net das gleiche wie THEMEN.xml! Ab sofort werde ich mir angewöhnen alles klein zu schreiben.

PS: Hättest dir jetzt ein Nachtessen verdient!

Wenn dir der Begriff Kollekte nicht fern ist, dann schau einfach mal in meinen Blog (Signatur die 1.) und denk feste daran, dass ich gerne Kaffee trinke ... :D

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat