Modrewrite

Daniel Steffen novinet

Angesehenes Mitglied
Hallo,

und wiederum ne Frage. Kann ich per PHP rauslesen, ob am Server Modrewrite aktiviert ist? Also das Modul geladen?

Wichtig wäre, dass ich einen true / false Wert bekomme, mit dem ich später weiterarbeiten kann.

Danke, Daniel
 
Hallo,

dabei können Dir die Apache Funktionen von PHP weiterhalten, die Funktion apache_get_modules [1] liefert ein Array mit den geladenen Modulen zurück, mit der Funktion in_array kann man darauß schnell einen Boolean-Wert bekommen.



MfG Sascha Ahlers

[1] array apache_get_modules ( void )
 
Ich hätte es so gemacht:
CODE <?
function parsePHPModules() {
ob_start();
phpinfo(INFO_MODULES);
$s = ob_get_contents();
ob_end_clean();

$s = strip_tags($s,'<h2><th><td>');
$s = preg_replace('/<th[^>]*>([^<]+)<\/th>/',"<info>\\1</info>",$s);
$s = preg_replace('/<td[^>]*>([^<]+)<\/td>/',"<info>\\1</info>",$s);
$vTmp = preg_split('/(<h2>[^<]+<\/h2>)/',$s,-1,PREG_SPLIT_DELIM_CAPTURE);
$vModules = array();
for ($i=1;$i<count($vTmp);$i++) {
if (preg_match('/<h2>([^<]+)<\/h2>/',$vTmp[$i],$vMat)) {
$vName = trim($vMat[1]);
$vTmp2 = explode("\n",$vTmp[$i+1]);
foreach ($vTmp2 AS $vOne) {
$vPat = '<info>([^<]+)<\/info>';
$vPat3 = "/$vPat\s*$vPat\s*$vPat/";
$vPat2 = "/$vPat\s*$vPat/";
if (preg_match($vPat3,$vOne,$vMat)) { // 3cols
$vModules[$vName][trim($vMat[1])] = array(trim($vMat[2]),trim($vMat[3]));
} elseif (preg_match($vPat2,$vOne,$vMat)) { // 2cols
$vModules[$vName][trim($vMat[1])] = trim($vMat[2]);
}
}
}
}
return $vModules;
}

function getModuleSetting($pModuleName,$pSetting) {
$vModules = parsePHPModules();
return $vModules[$pModuleName][$pSetting];
}

if(ereg("rewrite",getModuleSetting('apache2handler','Loaded Modules')))
echo "ja!";

?>

Funktion hab ich auf php.net gefunden:
http://php.net/manual/de/function.phpinfo.php
 
QUOTE (Nils Caspar @ Fr 21.4.2006, 14:00) Ich hätte es so gemacht: [...]

Das hätte ich nie gerne so gemacht, die Funktion wäre IMHO viel zu anfällig, insbesondere von Änderungen an der Ausgabe von phpinfo.
Auch denke ich, verbraucht die mehr Arbeitsspeicher zum Parsen und Rechenleistung an sich.



MfG Sascha Ahlers
 
Hallo,

apache_get_modules funktioniert leider nicht bei jeder php-version und darauf bin ich angewiesen, da ich es auf den unterschiedlichsten system testen will. Auch die zweite Variante will leider nicht, weiss nicht weshalb.

Mir gehts um folgendes: mein Script benötigt modrewrite und bevor ein Kunde es installiert, soll er testen können, ob es bei ihm läuft. Vielleicht gibts ja ne andere möglichkeit dies zu testen und kenn die blos net?

Daniel
 
Andere Methoden gäbe es, die wären aber schon sehr spezifisch und ähnelten auch der Abfrage von der Phpinfo-Seite, doch aller Wahrscheinlichkeit werde diese von guten Administratoren abgestellt bzw. gar nicht erst angeschaltet.
Selbst wenn mod_rewrite geladen ist, ist noch nicht mal unbedingt gesagt, dass dieses unbedingt von jedem voll eingesetzt werden kann.

Ich würde eher damit arbeiten: "Das Script konnte leider nicht ermitteln, ob diese Funktionalität zur Verfügung steht, fragen Sie Ihren Provider oder Server-Administrator nach dieser Funktionalität."
Mir fiele sonst auch keine 100% bzw. zuverlässigere Methode zur Überprüfung ein.


Nebenbei noch, sein Script so starr zu gestalten, dass es mod_rewrite zwingend notwendig macht, stellt nicht unbedingt gerade gute Programmierarbeit dar.



MfG Sascha Ahlers
 
Hallo,

leider muss ich gestehen, dass ich mich nicht weitgenug auskenne.

Kann man beide Methoden verbinden? Wenn ja wie?

Wollte eben eine Mod-Abfrage machen und dann die richtige File laden.

Gruß, Daniel
 
QUOTE (Daniel Cieslar @ Fr 21.4.2006, 15:45) [...] Wollte eben eine Mod-Abfrage machen und dann die richtige File laden. [...]

Ich würde eher den Benutzer dies in der Konfiguration einstellen lassen, ob er mod_rewrite verwenden möchte und eine Anzeige mit drei verscheidenen Zuständen als kleine Entscheidungshilfe anbieten.
So kann er bei Problemen halt sagen, ich stelle lieber mod_rewrite ab, anstatt erst den Programmcode bearbeiten zu müssen, wenn etwas nicht so klappt.



MfG Sascha Ahlers
 
Ja,

mein Problem sind aber die DAUS :) Die Leute kennen sich net aus und wissen nicht was das ganze ist.

Du hast gesagt, man könne die Links auch dynamisch machen? Also seite.html für mod_rewrite und index.php?page=seite für die Leute ohne?

Daniel
 
QUOTE (Daniel Cieslar @ Fr 21.4.2006, 16:04)[...] mein Problem sind aber die DAUS :) Die Leute kennen sich net aus und wissen nicht was das ganze ist. [...]

Das mag ja stimmen, aber wenn man sich auf solche Sachen einlässt, muss man sich halt mal weiterbilden oder jemanden dafür Bezahlen, welcher sich dann damit auseinandersetzt. Gerade deshalb bezahlen mich gewisse Personen auch dafür, dass ich mich um solche technischen Angelegenheiten kümmere.




QUOTE (Daniel Cieslar @ Fr 21.4.2006, 16:04)[...] Du hast gesagt, man könne die Links auch dynamisch machen? Also seite.html für mod_rewrite und index.php?page=seite für die Leute ohne? [...]

Ich weiß nun nicht, was genau Du damit meinst, und mir wäre auch nicht bekannt, dass ist sowas direkt gesagt hätte, aber nach dem Beispiel meine ich ja, die Grundeinstellung wäre halt, dass die dynamischen URLs benutzt werden und für alle die es umstellen gibt es dann die statisch anmutenden URLs. Natürlich könnte man bei einen Installation-Script diese Entscheidung gleich mit einbeziehen.



MfG Sascha Ahlers
 
Im Moment bin ich am "lernen" und "experimentieren".

Liege ich richtig in der Annahme, dass es keine Möglichkeit gibt, die, sobald ich in den Einstellungen "Mod rewrite" auf aktiv gesetzt habe die Links automatisch umschreibt in seite.html, ansonsten index.php?page=seite im html-quellcode aufruft?

Daniel
 
Nichts was mir bekannt wäre, ich würde mir eine eigene kleine Funktion schreiben um die Links zu erstellen. Zumindestens gehe ich so vor.


MfG Sascha Ahlers
 
Ich würd auch ne Abfrage einbauen... Leute die nicht wissen, was mod_rewrite ist und es auch im Handbuch nicht finden, brauchen es auch nicht...
tongue.gif
 
Ja diese Funktion wäre nicht das Problem, die kann ich auch selbst schreiben.

Um zu deiner Anregung vorhin zurückzukehren, dass man dich buchen sollte - wie / wann soll ich es denn lernen, wenn ich alles, was ich noch nicht kann abgebe? Man wächst doch mit den Aufgaben :)

Da ich leider vom momentanen Standpunkt aus nicht auf mod_rewrite verzichten kann und den Kundne auch Anregungen geben möchte zu mir zu wechseln muss ich mir was anderes einfallen lassen.

Gruß, Daniel
 
Zurück
Oben