XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   short_open_tag deaktivieren ohne Zugriff auf ini-Dateien (http://xhtmlforum.de/showthread.php?t=67646)

Vampy 07.06.2012 10:48

short_open_tag deaktivieren ohne Zugriff auf ini-Dateien
 
Heyho,

ich unternehme gerade die ersten Gehversuche in PHP und habe mich ein wenig mit include() beschäftigt.

Im ersten Schritt möchte ich eine index.php erstellen, die als einzigen Befehl ein include() auf eine xhtml-Datei enthält.

PHP-Code:

<?php
    
include('./html/frame_test.xhtml');
?>

Beim Aufruf läuft der Parser allerdings auf einen Fehler, da auf dem Server das short_open_tag aktiviert ist und die xhtml-Datei nun mit der Zeile <?xml version="1.0" encoding="UTF-8"?> beginnt.

Der Versuch das Tag zu deaktivieren brachte keinen Erfolg. Probiert habe ich eine abgewandelte Version der index.php mit ini_set().

PHP-Code:

<?php
    
if (ini_get('short_open_tag')) {
        
ini_set('short_open_tag',0);
    }
    include(
'./html/frame_test.xhtml');
?>

Auch eine .htaccess mit dem Inhalt php_flag short_open_tag off brachte keine Änderung.

Gibt es eine Möglichkeit das Tag zu deaktivieren, wenn die o.g. Methoden gescheitert sind und ich keinen administrativen Zugang zum Server habe, um die ini.Dateien zu ändern?

LG
Vampy

David 07.06.2012 11:41

Ja, schreib den Support an und bitte, dass man das umstellt. Ansonsten den Host wechseln

inta 07.06.2012 12:50

Du kannst und solltest auf die XML-Deklaration verzichten und die Kodierung stattdessen als Metaangabe in den HTML-Kopf verbannen. Die Deklaration lesen eh nur XML-Parser und da für XML UTF-8 als Standard gilt, ist die Angabe wenig nützlich.

Vampy 08.06.2012 16:03

Es scheint wohl wirklich keine andere Möglichkeit zu geben, als entweder den Support zu bemühen oder eben das XML-Tag wegzulassen.

Da der W3C-Validator das fehlende XML-Tag allerdings nicht als Fehler ankreidet (und ich somit weiterhin valides XHTML bekomme), habe ich intas Ratschlag befolgt, was den Fehler dann auch prompt behoben hat. :thumbsup:

Jetzt stehe ich allerdings vor dem nächsten Problem, daß meine "index.php" zwar keinen Fehler mehr beim Seitenaufruf erzeugt. Dafür wird aber einfach gar nichts mehr angezeigt. Ich bekomme beim Aufruf nur ein leeres Browserfenster (Firefox 13.0, SeaMonkey 2.9.1).

Ich vermute mal stark, daß es mit der Dateiendung zusammenhängt (.php anstelle von .xhtml). Wie bekomme das Dokument nun trotzdem angezeigt?

Praktikant 08.06.2012 18:12

Nein, die Dateiendung ist egal.

Das klingt eher nach einem Parse Error, der jedoch nicht als Fehlermeldung ausgegeben wird.
Schreib mal bitte error_reporting(E_ALL) in die erste Zeile deiner PHP-Datei.

Vampy 08.06.2012 18:53

Zitat:

Zitat von Praktikant (Beitrag 517544)
Das klingt eher nach einem Parse Error, der jedoch nicht als Fehlermeldung ausgegeben wird.

Wenn ich mir den Seitenquelltext der "leeren" Seite anzeigen lasse, so kommt 1:1 der selbe Quelltext heraus, wie in meiner (per Hand erstellten) frame_test.xhtml. Der PHP-Code scheint also durchaus seinen Sinn zu erfüllen.

Ich hab' den Fehler aber mittlerweile durch Recherche hier im Forum entdeckt:

PHP-Code:

<?php
    header
('Content-type: application/xhtml+xml');
    include(
'./bin/includes/frameset.inc.php');
?>

Nachdem ich die Zeile mit der header-Angabe eingefügt habe, wird die Seite richtig angezeigt.

Da die ursprüngliche Frage auch abgehakt ist, kann der Thread meinetwegen zu. Danke an alle, die auf dieser Nuß mit "herumgedacht" haben.

Praktikant 08.06.2012 18:59

Hier werden keine Themen geschlossen.

Desweiteren: Du nutzt nicht ernsthaft Frames?!

Vampy 08.06.2012 19:18

Nein, natürlich nicht. Zumal ich mit Frames und XHTML1.1 nicht durch den Validator kommen würde ;)

Die verwendeten Dateien haben nur den "frame" im Namen, weil ich ein Frameset unter Verwendung von DIV-Containern und CSS "nachgebaut" habe. Sinn der ganzen Sache sollte es sein, das komplette XHTML-Grundgerüst in die "frameset.inc.php" auszulagern, sodaß ich das identische Design für alle Seiten benutzen kann, und dann eben jeweils nur noch den Inhalt der DIV-Container austauschen muß.

Btw. wie sind denn hier die Gepflogenheiten bezüglich gelöster Anfragen? In manchen Foren ist es üblich sowas wie [gelöst] vor den Threadtitel zu stellen bzw. den Thread schließen zu lassen.

LG
Vampy


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:18 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023