Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   .htaccess - Code nur auf einem Server ausführen (https://www.delphipraxis.net/153555-htaccess-code-nur-auf-einem-server-ausfuehren.html)

himitsu 8. Aug 2010 08:38

.htaccess - Code nur auf einem Server ausführen
 
damit aktuell auf meinem Server .php mit PHP5 ausgeführt wird (standardmäßig noch mit PHP4)
füge ich in die .htaccess folgende Zeile ein:
Code:
AddHandler x-httpd-php5 .php
Leider führt diese Zeile auf meinem lokalen Testserver zu einem 500er-Fehler.
Da ich einen automatischen Upload/Abgleich zwischen Verzeichnissen beider Server nutze, hätte ich somit immer auf einem Server ein Problem (falsche PHP-Version oder nichtfunktionierender Server) und die Dateien als .php5 zu benennen wollte ich auch weglassen.

Gefunden hätte ich jetzt <Directory und <DirectoryMatch ,
Code:
<DirectoryMatch "^/home/www/nchXXX/html">
  AddHandler x-httpd-php5 .php
</DirectoryMatch>
aber hier wird auch ein 500 Internal Error geworfen und die Log meint "<DirectoryMatch not allowed here".


Gibt es nun noch etwas Anderes, womit man in der htaccess die Server unterscheiden kann?

alcaeus 8. Aug 2010 09:49

AW: .htaccess - Code nur auf einem Server ausführen
 
Der 500er-Fehler kommt daher, dass in deiner .htaccess wohl kein AddType erlaubt. Pruefe daher die AllowOverride-Direktive in deiner VHost- oder Apache-Konfiguration.

BTW, was heisst "auf dem Server mit PHP5 (standardmaessig mit PHP4)"? Soll das heissen dein Server laeuft auf PHP5, deine lokale Umgebung mit PHP4 oder wie muss man das verstehn?

Greetz
alcaeus

himitsu 8. Aug 2010 10:04

AW: .htaccess - Code nur auf einem Server ausführen
 
Wieso AddType?

Nein, mein lokaler Apache hat nur PHP 5 installiert.
Aber auf dem Webspace sind sowohl PHP 4, als auch PHP 5 installiert
und .php ist standardmäßig mit PHP 4 verbunden, aber über dieses AddHandler werden *.php-Dateien mit PHP 5 ausgeführt. (das klappt auch und ist dort der offizielle Weg)

.php > PHP 4
.php4 > PHP 4
.php5 > PHP 5

Auf diese Konfiguration hab ich aber keinen direkten Zugriff.
Sobald die's geschafft haben PHP 5.3 auch in den kleineren Hostingpaketen einzupflegen (aktuell ist dort nur ein 5.2.4 verfügbar), würde ich das ganze Paket upgraden und .php auf PHP5 umstellen lassen.

Mein lokaler Testserver mag aber dieses "AddHandler x-httpd-php5 .php" nicht und drum wäre es schön, wenn ich nur eine .htaccess hätte, welcher aber lokal diesen Befehl ignoriert.

Valle 8. Aug 2010 11:55

AW: .htaccess - Code nur auf einem Server ausführen
 
Wie alcaeus schon sagte, musst du dafür in der Konfiguration deines Apachen was ändern. Du brauchst die AllowOverride Direktive. Schau dir dazu am besten mal die Dokumentation von Apache an, dort ist das wirklich gut beschrieben. :-)

Liebe Grüße,
Valle

alcaeus 8. Aug 2010 21:36

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von himitsu (Beitrag 1040219)
Wieso AddType?

Sorry, ich meinte AddHandler. Fuer AddType gilt aber dasselbe.

Wie valle bereits gesagt hat, guck dir die AllowOverride-Direktive an. Diese musst du wie bereits gesagt im VHost oder in der globalen Apache-Config setzen.

Greetz
alcaeus

himitsu 8. Aug 2010 21:44

AW: .htaccess - Code nur auf einem Server ausführen
 
Mal sehn ob der Support da was dran drehen kann/mag.

alcaeus 8. Aug 2010 21:49

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von himitsu (Beitrag 1040302)
Mal sehn ob der Support da was dran drehen kann/mag.

Wahrscheinlich nicht. Damit kannst du dann bisserl mehr Optionen ueberschreiben, u.a. koenntest du damit PHP-Einstellungen aendern. Ich kann mir gut vorstellen dass das nicht gewuenscht wird ;)
Mein Tipp: reinen PHP5-Hoster suchen.

Greetz
alcaeus

mkinzler 8. Aug 2010 21:54

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Mein Tipp: reinen PHP5-Hoster suchen.
Oder einen dedicated Server buchen

himitsu 8. Aug 2010 22:19

AW: .htaccess - Code nur auf einem Server ausführen
 
Soeinen Tipp hatten die auch schon ... in den größeren VServern könnte ich mir auch sofort das neuste PHP installieren (lassen) und sonstwas machen ... ist dann natürlich auch teurer.

Ansonsten hatte ich mir schon einiges um-/verstellen lassen.
so scheint die maximale Scriptlaufzeit aktuell nicht grade klein zu sein.
(die war damals auf 15 sekunden eingestellt und bei der Skalierung (Berechnung der Vorschaubilder und Co.) einige Fotos ging dann regelmäßig was schief.

fkerber 8. Aug 2010 23:04

AW: .htaccess - Code nur auf einem Server ausführen
 
Hi!

Vielleicht verstehe ich dein Posting nicht, aber sagst du nicht, dass das mit AddHandler beim Hoster geht und nur auf deinem lokalen Testsystem nicht?

Dann müsstest du ja nur lokal bei dir was drehen...


Liebe Grüße,
Frederic

himitsu 8. Aug 2010 23:13

AW: .htaccess - Code nur auf einem Server ausführen
 
Das AddHandler geht beim Hoster, aber lokal nicht.
(auf'm Server läuft PHP als CGI und hier/lokal als MOD)

Das <Directory und <DirectoryMatch läuft (noch) auf beiden Servern nicht.

Valle 9. Aug 2010 00:28

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von fkerber (Beitrag 1040316)
Dann müsstest du ja nur lokal bei dir was drehen...

Ja, so ist es auch. Alecaeus und ich reden hier scheinbar ein bisschen ins Leere... ;-)
Linux und Scirptsprachen sind wohl nichts für unseren himi. :roll:

Directory und DirectoryMatch funktionieren nunmal nicht in htaccess Dateien. Das geht nur in der Server-Konfiguration selbst.

Liebe Grüße,
Valle

himitsu 9. Aug 2010 06:57

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von Valle (Beitrag 1040320)
Directory und DirectoryMatch funktionieren nunmal nicht in htaccess Dateien. Das geht nur in der Server-Konfiguration selbst.

Ja und darum hab ich doch gefragt, ob es auch nich noch was Anderes auf dieser Ebene gibt?

Der nötige Befehl ist ja schließlich erlaubt,
nur daß er eben nur auf dem Webserver ausgeführt werden soll.
Darum wäre es schön, wenn man in der .htaccess sagen kann
"diesen Code bitte nur dort ausführen" ... so ähnlich wie es eben mit DirectoryMatch der Fall gewesen wäre.

DirectoryMatch macht ja eigentlich überhaupt nichts, außer abzufragen in welchem Verzeichnis der darin enthaltene Code ausgeührt werden soll.
Durch das unterschiedliche Rootverzeichnis wäre das ja gegangen, da sich so die absoluten Verzeichnissnamen unterscheiden.
Da ich eben durch einen automatischen Upload in beiden Servern die selben Dateien hab.

mkinzler 9. Aug 2010 06:59

AW: .htaccess - Code nur auf einem Server ausführen
 
Schau doch einfach in die Apache Doku :zwinker:

himitsu 9. Aug 2010 07:10

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von mkinzler (Beitrag 1040328)
Schau doch einfach in die Apache Doku :zwinker:

Hatte ich doch schon und sonst ist mir noch nichts aufgefallen und och via Google kam nichts weiter raus, außer ebem <directory und Co.

Bei RewriteRule schreibst'e ein RewriteCond davor ... nur daß RewriteCond hier natürlich nicht funktioniert.

generic 9. Aug 2010 09:23

AW: .htaccess - Code nur auf einem Server ausführen
 
also hier steht:
http://httpd.apache.org/docs/2.2/mod...tml#addhandler

addHandler darf in .htaccess verwendet werden.

also legst du einfach in dem verzeichnis wo das php laufen soll, eine htaccess mit nur dem addhandler befehl.

himitsu 9. Aug 2010 09:28

AW: .htaccess - Code nur auf einem Server ausführen
 
Das wollte ich ja, nur mag mein lokaler Testserver diesen Befehl dann nicht, da PHP dort anders eingebunden ist (CGI <> ApacheMOD).
Wie gesagt, beide Server haben die selben Dateien drauf.

Wenn der lokale Testserver soeine .htaccess findet, dann werden dort die .php-Dateien garnicht mehr ausgeführt und direkt zum Download angeboten.
Drum soll ja der Befehl auch nur auf dem Webserver ausgeführt werden.

fkerber 9. Aug 2010 09:31

AW: .htaccess - Code nur auf einem Server ausführen
 
Hi!

Wäre es nicht einfacher, dein lokales Testsystem umzustellen?


Liebe Grüße,
Frederic

generic 9. Aug 2010 09:42

AW: .htaccess - Code nur auf einem Server ausführen
 
Dann definiere auf den Systemen Variablen und Frage diese in der .htaccess ab.
Bei Bedarf führst du dann die Befehle aus.

gsh 9. Aug 2010 12:36

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von fkerber (Beitrag 1040387)
Wäre es nicht einfacher, dein lokales Testsystem umzustellen?

Wäre es nicht einfacher beim "echten" Server das AddHandler in die Apache Config einzufügen damit er ohne .htaccess php dateien versteht:?:

fkerber 9. Aug 2010 12:42

AW: .htaccess - Code nur auf einem Server ausführen
 
Hi!

Das ist aber oftmals nicht möglich, weil die Installation ja nicht für dich alleine ist (es klingt für mich nach einem SharedHosting-Server).

Außerdem bin ich der Meinung, dass ein lokales Testsystem dem Produktiv-System so ähnlich wie möglich sein sollte.


Liebe Grüße,
Frederic

DeddyH 9. Aug 2010 12:46

AW: .htaccess - Code nur auf einem Server ausführen
 
Zitat:

Zitat von fkerber (Beitrag 1040456)
Außerdem bin ich der Meinung, dass ein lokales Testsystem dem Produktiv-System so ähnlich wie möglich sein sollte.

Das sehe ich genauso, sonst bringt das ganze Testen ja nichts.

himitsu 9. Aug 2010 13:02

AW: .htaccess - Code nur auf einem Server ausführen
 
Jupp, bin nicht alleine auf dem Shared-Server.

@fkerber: der versteht ja PHP, allerdings standardmäßig halt PHP 4.
Über Dateien mit der Endung .php5 oder eben das AddHandler (eher ChangeHandler) kann man das umstellen.
Durch das AddHandler wären dann also die "wichtigen" Teile für meine Ansprüche vergleichbar genug.


Das lokale System entspricht in etwa dem geplanten neuen "Server" mit PHP 5.3.
Aktuell ist es nur ein 5.2.4, aber auch da läuft der PHP-Code (mit 2 kleinen Anpassungen, welche ich aber via PHP unterscheiden kann).

Und Testsystem ist wörtlich gemeint:
Es ist ein portabler Apache 2.2, welcher aktuell mit PHP 5.3, MySQL 5.1 und PHPMyAdmin ausgestattet ist. (und nein, es ist nicht XAMPP, sondern Mowes)

mkinzler 9. Aug 2010 13:49

AW: .htaccess - Code nur auf einem Server ausführen
 
Dort wird er keinen Zugriff auf die Konfig haben (gehosteter Server)

Valle 10. Aug 2010 00:25

AW: .htaccess - Code nur auf einem Server ausführen
 
Ist es denn so schwer in die "httpd.conf" die Zeile "AllowOverride FileInfo" hinzuzufügen? :gruebel: Ich kann zwar auf Anhieb nicht sagen, ob sich das mit mod_php5 verträgt, aber ein Versuch ist es wohl wert...

Liebe Grüße,
Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz