[HowTo] PHP4/PHP5 als CGI - gepatcht (deutsches HowTo)

  • Thread starter Thread starter server4downs
  • Start date Start date
S

server4downs

Guest
Hallo zusammen.

Hier kommt das ultimative, langerwartete, geniale, einzigartige HowTo...

Note: Please click here to see the English version.

Achtung! Dieses HowTo richtet sich an fortgeschrittene Linux-Serveradministratoren!

Es werden grundlegende Linux-Kenntnisse (u.a. auch Apache-Kenntnisse etc) vorausgesetzt.

Ziel dieses HowTo's:
- PHP4 und PHP5 parallel laufen zu lassen und
- trotzdem nicht auf open_basedir verzichten

Voraussetzungen:
- Linux-Webserver
- Apache 1.xx oder 2.xx
- gute Linuxkenntnisse (es wird auf Grundlagen aufgebaut)
- 20 Minuten Zeit
- 20 Liter Bier (Erfolg feiern, bzw. Frusttrinken)

So, nun geht´s los:
Kleine Geschichte zum Anfang:
Wer kennt das Problem nicht? Man will einerseits auf PHP4 nicht verzichten (z.B. Kunden benötigen es noch) aber anderseits will man PHP5 testen.
Zwei Apache-Module auf ein und dem selben Webserver sind unmöglich (höchstens mit 2. Apache-Instanz, was hier nicht erklärt werden soll).
Nun ist guter Rat teuer. Um es nicht zu spannend zu machen:
Man muss zumindest eine Version als CGI-Version laufen lassen. Es empfiehlt sich hierbei jedoch nur z.B. PHP5 als CGI laufen zu lassen.
Wir gehen nun also davon aus, dass PHP4 schon als Apache-Modul installiert ist.
Kleiner Hinweis, wieso dieses HowTo als "einzigartig" bezeichnet wird:
Die CGI-Edition bringt den Nachteil mit sich, dass über den Apachen keine Einstellungen mehr an PHP vorgenommen werden können. D.h. dass Einstellungen, wie z.B. die open_basedir flachfallen. Und genau diese function wird in diesem HowTo gepatched. Denn ohne open_basedir sieht der Server nicht mehr unbedingt sicher aus. Man kann zwar einfach verschiedene Verzeichnis-Berechtigungen setzen, die verhindern, dass man vom einem Doc_Root in den Doc_Root des anderen Kunden gelangt, aber der Rest des Servers bleibt weitestgehend offen (siehe 1&1 Webhosting-Sever).
Um dies zu vermeiden habe ich mich an den Source von PHP4/5 rangemacht. Hierbei wird die open_basedir gefälscht. Es sollte jedoch kein Grund zur Sorge bestehen, dass dies ein unsicheres Workaround ist. Es wurde mehrfach und auf verschiedenen Maschinen getestet (Wahrscheinlichkeit eines Bugs: 0,00000000000000000000000001%).
Es werden KEINE C-Kenntnisse erfordert! (das habe ich schon erledigt).
So, nun gehts wirklich los:
1. PHP-Sources ziehen:
z.B.:
Code:
wget http://de3.php.net/get/php-5.0.5.tar.gz/from/this/mirror
2. Entpacken:
Code:
tar xfz php-5.0.5.tar.gz
3. In's Verzeichnis wechseln:
Code:
cd php-5.0.5
4. Configure ausführen:
z.B.:
Code:
./configure --prefix=/usr/share/php5 --datadir=/usr/share/php5 --bindir=/usr/bin/php5 --libdir=/usr/share/php5 --with-config-file-path=/etc/php5 --with-exec-dir=/usr/lib/php5/bin --enable-memory-limit [B]--enable-force-cgi-redirect[/B] --enable-track-vars [B]--with-mysql=/usr[/B] --without-pear --enable-session --without-sqlite --enable-exif
Hinweis:
--enable-force-cgi-redirect wird zur CGI-Version benötigt. Hierbei darf kein apxs/apxs2 verwendet werden.
--with-mysql=/usr MySQL muss bei PHP5 mit eincompiliert werden.
Natürlich ist dies nur eine Minimal-Konfiguration. Weitere Dinger können selbstverständlich mit eingetippt werden.
5. ENTER schmettern
6. Abwarten. Configure läuft durch. Bei Fehlern bitte Google befragen. Meistens wird Configure wegen fehlender Header-Files meckern. Hierzu einfach diese installieren (devel-packages).
7. (optional) Die ersten 0,5l können getrunken werden. Je nach Servergeschwindigkeit können auch 1-2l getrunken werden.
8. Configure ist nun fröhlichst durchgerattert und ist mit einer Success-Meldung fertig.
9. Nun gehts erstmal an´s Patchen:
a) Mit einem beliebigen Editor die Datei /php-5.0.5/main/fopen_wrappers.c öffnen (z.B. mit vi)​
b) Nun die Zeile mit dem Inhalt
Code:
PHPAPI int php_check_open_basedir_ex(const char *path, int warn TSRMLS_DC)
aufsuchen. Dies ist die Funktion, die wir faken werden.
c) Nun gehen wir noch ein paar Zeilen runter und bewegen uns mit dem Cursor unter folgenden Auszug:
Code:
if (PG(open_basedir) && *PG(open_basedir)) {[/COLOR][/COLOR][/INDENT][/COLOR][/COLOR][/INDENT]
[COLOR=Indigo][COLOR=Black][INDENT][COLOR=Indigo][COLOR=Black][INDENT]                char *pathbuf;[/INDENT][/INDENT]
[INDENT][INDENT]                char *ptr;[/INDENT][/INDENT]
[INDENT][INDENT]                char *end;
d) Jetzt kommt der tricky part... wir fügen nun folgenden Code ein:


Code:
/*faked base_dir */[/INDENT][/INDENT]
[INDENT][INDENT][/INDENT][/INDENT]
[INDENT][INDENT]                char awesome[MAXPATHLEN];[/INDENT][/INDENT]
[INDENT][INDENT]                char pathstuff[MAXPATHLEN];[/INDENT][/INDENT]
[INDENT][INDENT]                int counter = 0;[/INDENT][/INDENT]
[INDENT][INDENT]                strlcpy(awesome, "", sizeof(awesome));[/INDENT][/INDENT]
[INDENT][INDENT]                strlcpy(pathstuff, SG(request_info).path_translated, sizeof(pathstuff));[/INDENT][/INDENT]
[INDENT][INDENT]                int i;[/INDENT][/INDENT]
[INDENT][INDENT]                for(i = 0; pathstuff[i]; i++)[/INDENT][/INDENT]
[INDENT][INDENT]                    {[/INDENT][/INDENT]
[INDENT][INDENT]                    if(pathstuff[i] == '/')[/INDENT][/INDENT]
[INDENT][INDENT]                    counter++;[/INDENT][/INDENT]
[INDENT][INDENT]                    if(counter == [COLOR=Red][B]6[/B][/COLOR])[/INDENT][/INDENT]
[INDENT][INDENT]                        {[/INDENT][/INDENT]
[INDENT][INDENT]                        pathstuff[i+1] = 0;[/INDENT][/INDENT]
[INDENT][INDENT]                        strlcpy(awesome, pathstuff, sizeof(awesome));[/INDENT][/INDENT]
[INDENT][INDENT]                        break;[/INDENT][/INDENT]
[INDENT][INDENT]                        }[/INDENT][/INDENT]
[INDENT][INDENT]                    }[/INDENT][/INDENT]
[INDENT][INDENT][/INDENT][/INDENT]
[INDENT][INDENT]                strlcat(awesome, ":/other/base/dirs/dude/:/tmp/", sizeof(awesome));[/INDENT][/INDENT]
[INDENT][INDENT][/INDENT][/INDENT]
[INDENT][INDENT]                /* end! */
Erklärung hierzu (bitte genau lesen):
Dieser Patch basiert auf folgendem Gedankengut:
Jeder sollte beim Hosting auf eine gewisse Verzeichnisbaumstruktur seiner User achten.​
Beispiel:​
Doc_Root: /home/www/hostedstuff/users/username/
Hierbei sollte beachtet werden, dass /username durch den Username oder sonst was ersetzt wird.​
Das Script (oben) checkt nun einfach den jeweils aufgerufenen Scriptpfad ab und ermittelt hierdurch den Doc_Root.​
Hierbei wird einfach nach "/" gesucht. Hier muss nun bis 6x "/" durchlaufen werden und dieser String wird dann als Doc_Root verwendet.​
Beispiel:
Username: sweetheart​
Dieser User ruft nun sein Script fools.php im Ordner /donuts auf.​
Script-Path: /home/www/hostedstuff/users/sweetheart/donuts/fools.php
Dies wird nun sofort von unserem Script analysiert und heraus kommt der Doc_Root​
/home/www/hostedstuff/users/sweetheart/ in welchen der User eingesperrt werden soll.​
Hinzu kommen dann noch zusätzliche open_basedirs, welche mit ":" getrennt werden. Dies ist jedoch optional und kann auch rausgelassen werden.​
Das Geniale an diesem Patch ist, dass es auch mit Mass-Hosting-Solutions arbeitet (mod_vhost_alias).​
d) Nun muss noch der Funktionsaufruf geändert werden:​
Code:
pathbuf = estrdup(PG(open_basedir));
wird durch​
Code:
pathbuf = estrdup(awesome);
ersetzt.​
e) nun speichern wir die ganze Geschichte ab! (von Editor zu Editor anders deshalb keine Beschreibung)​
f) Editor verlassen.​
g) erfolgreich gepatcht. Herzlichen Glückwunsch. Was dich jetzt 5 Minuten gekostet hat ist nur durch fast 5 monatiger Arbeit an diesem Patch möglich. Hier steckt wirklich viel Arbeit und die damit verbundenen Hirnzellen drinnen. Ich bitte deshalb den Code nicht ins Lächerlich zu ziehen (ich bin kein Profi).​
h) (optional) wir leisten uns nun nochmals ein Bier ;)
10. Wir kommen nun zum make-Befehl:
Code:
make
11. Warten... (Bier aufmachen und trinken)
12. Alles gut durchgelaufen? Super!
Dann jetzt:
Code:
make install
reinkloppen
13. Warten. Files werden installiert!
14. Fertig mit PHP-Installation.
15. Ganze Geschichte nun auf Apache anwenden...
16. In Vhost-File, bzw. httpd.conf folgendes eintragen:
Code:
<Directory "/usr/bin/php5">
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
ScriptAlias /php5rocks /usr/bin/php5
Action php5-cgi /php5rocks/php
AddType php5-cgi .php5
17. Natürlich kann man auch noch suexec einsetzen (empfohlen).
Hierzu biete ich jetzt allerdings kein HowTo an. Einfach unter gewünschtem User laufen lassen. Eventuell noch an suexec rumschrauben:
18. Nun werden alle *.php5 als PHP5-CGI geparst.
19. Entgültig fertig!
20. Geschafft!
21. Rest auftrinken! ;)

Nachwort:
Das HowTo ist auch auf PHP4 anwendbar!
In diesem HowTo steckt massig Arbeit. Ich bitte dies zu berücksichtigen und aus diesem Thread deshalb keine Laber-Ecke zu machen.
Das HowTo ist für Fortgeschrittene Admins bestimmt. Deswegen fang ich auch nicht von NULL an bei der Beschreibung.
Sollte das HowTo euch wirklich gefallen haben, so freut sich CwCity.de jederzeit über eine Geldspende (Paypal).
Ich weise darauf hin, dass ich keinen kostenlosen Support per ICQ/MSN zu selbigem Thema anbiete!
Ich konnte auch nach wochenlangem Suchen keine Lösung über Google und PHP.net finden. Deshalb ist dieses HowTo etwas wirklich Besonderes! ;)
Selbstverständlich können auch noch andere Lösungswege existieren.

Ich übernehme KEINE Haftung für dieses HowTo!

Copyright © 2005-2006 by server4downs at serversupportforum.de and PHP-Installation.de - Installation/Update PHP4, PHP5 Apache-Modul, CGI, suPHP, FastCGI, CLI

Stand des HowTos: 22.10.2005 (13:24Uhr)
 
Last edited by a moderator:
Cooles Howto. Leider vertrage ich nicht so viel Bier. ;)

Anmerkung zu 9 d)
Die Variable awesome sollte vorinnitialisiert werden, da (z.B. aufgrund von Verständisschwierigkeiten oder evtl. auftretenen Ausnahmen) evtl. die Schleife ohne erreichen der 6 (o.ä. Zahl) beendet werden könnte. Ein strlcat bringt dann ein unkalkulierbares Ergebnis.

z.B. (kann vom einigen Compiler angemeckert werden):
char awesome[MAXPATHLEN] = {0};
Compiler sicher:
Code:
char awesome[MAXPATHLEN];
awesome[0] = 0;
// oder 
//strlcpy(awesome, "", sizeof(awesome));

huschi.
 
Danke für diesen Hinweis.
Das HowTo wurde soweit angepasst.
 
Klasse, sehr gut gelöst.
Ich würde es zwar anderst machen, aber für dein Massenhosting ist das die beste Ultimativste Lösung.

Ich benutze für die Sache mit OPEN_Basedir und PHP4 und PHP5 suphp mit der cgi php version. Dort gebe ich für jeden Virtuellen Host eine eigene php.ini an bei der ich diese Configuration angepasst habe.

Wie gesagt ist Geschmackssache. Aber gute Lösung werden bestimmt einige gebrauchen können.
 
Durchaus auch ein Lösungsweg!
Aber eben wie gesagt. Meine Lösung baut auf Hosting auf. Auch FastCGI wäre ansonsten keine schlechte Sache... aber es würde zu viele Prozesse brauchen und wäre schlecht mit mehreren tausend vhosts verbindbar.
Ein weiterer Vorteil an der "normalen" CGI-Lösung (im Gegensatz zu suPHP) ist, dass man mehrere PHP-Versionen verwenden kann. Man ist nicht nur auf 2 beschränkt. Dies "kann" von Vorteil sein.
 
Guten Tag,

habe diese Anweisung befolgt, leider meldet mein Server Fehler beim ausführen von *.php5 dateien (allen php5 dateien habe ich chmod 755 vergeben):

Forbidden
You do not have permission to access this document.

Woran kann es liegen?

System ist ein SuSe 9.3 Professional
Admin Oberfläche Plesk 7.54 Reloadet

Vielen Dank im Voraus
 
Hallo,

vorab will ich die Vorraussetzungen für dieses HowTo dir nochmals näher bringen:
Voraussetzungen:
- Linux-Webserver
- Apache 1.xx oder 2.xx
- gute Linuxkenntnisse (es wird auf Grundlagen aufgebaut)
- 20 Minuten Zeit
- 20 Liter Bier (Erfolg feiern, bzw. Frusttrinken)
Zu diesen sog. "Grundlagen" zählen IMHO auch das Studieren von Logfiles ohne sonderliche Aufforderung.

Wenn du wirklich Hilfe hier erwartest, so will ich doch gerade bei solch einem "advanced" HowTo dem Hilfesuchenden nicht jede Selbstverständlichkeit aus der Nase ziehen.
Bei gescheiter Fehlermeldungsangabe kann ich sicherlich weiterhelfen. So weigere ich mich ;)
 
php5 als CGI

Guten Tag,

Habe alles von neu gemacht. Jetzt Meldet Server beim aufruf von php5 dateien 500er Error

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.

More information about this error may be available in the server error log.



bin jetzt ratlos hoffe dass, Sie mir helfen können.

also kleiner Auszug:

# find / -name error_log
/var/log/apache2/error_log
/var/www/vhosts/mein_user/statistics/logs/error_log


In
/var/www/vhosts/mein_user/statistics/logs/error_log
stand folgendes:

[Fri Mar 03 09:54:27 2006] [warn] Cannot get media type from 'php5-cgi'
[Fri Mar 03 09:54:27 2006] [warn] Cannot get media type from 'php5-cgi'
[Fri Mar 03 09:54:27 2006] [warn] Cannot get media type from 'php5-cgi'
[Fri Mar 03 09:54:27 2006] [error] [client 83.135.138.57] failed to open log file
[Fri Mar 03 09:54:27 2006] [error] [client 83.135.138.57] fopen: No such file or directory
[Fri Mar 03 09:54:27 2006] [error] [client 83.135.138.57] Premature end of script headers: php


In restlichen Logs war nichts auffälliges…


Vielen Dank im Voraus
 
Last edited by a moderator:
Na, das sieht doch schonmal anders aus. Demnächst bitte noch Angaben über OS und Apache-Version.
Veränder doch einfach mal Folgendes:
Code:
<Directory "/usr/bin/php5">
 AllowOverride None
 Options +ExecCGI +FollowSymLinks
 Order allow,deny
 Allow from all
 </Directory>
 ScriptAlias /php5rocks /usr/bin/php5
[B][COLOR=Red]  Action php5-cgi application/php5rocks/php
  AddType application/php5-cgi .php5[/COLOR][/B]

Sollte funktionieren.
Ich fände es demnächst schön, wenn du einfach ein wenig mehr "Effort" in die Geschichte steckst, denn es tut mir ein wenig weh zu sehen, dass so schnell immer aufgegeben wird bei einem "Projekt", was mir schon Stunden um Stunden Kopfzerbrechen und Googlen beschert hatte.
HowTo Google:
1. Voraussetzung:
wenn man seine Server-Probleme ergooglen will, so braucht man mittel bis gutes English.
2. Wie Google ich solche Sachen?
Ich schnappe mir die Hauptaussage der Fehlermeldung.
Diese wäre in diesem Falle:
"Cannot get media type from"
Nun suchen wir danach:
http://www.google.de/search?hl=de&newwindow=1&q=%22Cannot+get+media+type+from%22&btnG=Suche&meta=
und merken, dass es s. hierbei nicht nur im PHP-Probleme handelt.
Also müssen wir die Suche weiter einschränken.
Dann mal los:
http://www.google.de/search?hl=de&newwindow=1&q=%22Cannot+get+media+type+from%22+php&btnG=Suche&meta=
Der Weg ist das Ziel ;)


Wieso habe ich dieses HowTo gepostet?
Weil ich es schade finde, dass viele Leute, bzw. Serveradministratoren nicht wissen, wie sie Google befragen können und es immer andere für s, machen lassen.

Also, ich hoffe, dass es nun bei dir funktioniert hat.
Freue mich auf kurze Rückmeldung.
 
server4downs said:
Na, das sieht doch schonmal anders aus. Demnächst bitte noch Angaben über OS und Apache-Version.
Veränder doch einfach mal Folgendes:
Code:
<Directory "/usr/bin/php5">
 AllowOverride None
 Options +ExecCGI +FollowSymLinks
 Order allow,deny
 Allow from all
 </Directory>
 ScriptAlias /php5rocks /usr/bin/php5
[B][COLOR=Red]  Action php5-cgi application/php5rocks/php
  AddType application/php5-cgi .php5[/COLOR][/B]

Sollte funktionieren.

Bitte nicht hauen nach dem ich Eintrag in httpd.conf geändert habe, kriege ich php5 dateien zum Donload angeboten.

Obwohl ich php5 Interpreter installiert habe alles nach Ihrem HowTo.
kleiner auszug:
# cd /usr/bin/php5
# ./php -v
PHP 5.1.2 (cgi) (built: Mar 3 2006 09:42:23)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies


in Apache Error_log ist jetzt das zusehen:
Code:
[Fri Mar 03 11:24:29 2006] [warn] child process 7533 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7586 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7587 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7525 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7526 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7527 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7528 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7529 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7533 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7586 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7587 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7526 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7527 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7528 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:29 2006] [warn] child process 7529 still did not exit, sending a SIGTERM
[Fri Mar 03 11:24:30 2006] [notice] caught SIGTERM, shutting down
[Fri Mar 03 11:24:31 2006] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Fri Mar 03 11:24:31 2006] [warn] RSA server certificate CommonName (CN) `h68516.serverkompetenz.net' does NOT match server name!?
[Fri Mar 03 11:24:31 2006] [warn] RSA server certificate CommonName (CN) `plesk' does NOT match server name!?
[Fri Mar 03 11:24:31 2006] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Fri Mar 03 11:24:32 2006] [warn] RSA server certificate CommonName (CN) `h68516.serverkompetenz.net' does NOT match server name!?
[Fri Mar 03 11:24:32 2006] [warn] RSA server certificate CommonName (CN) `plesk' does NOT match server name!?
[Fri Mar 03 11:24:32 2006] [notice] mod_python: Creating 32 session mutexes based on 150 max processes and 0 max threads.
[Fri Mar 03 11:24:32 2006] [notice] FastCGI: process manager initialized (pid 7665)
[Fri Mar 03 11:24:32 2006] [notice] Apache/2.0.53 (Linux/SUSE) configured -- resuming normal operations



System: SuSe 9.3 Professional
Admin Oberfläche: Plesk 7.5.4
Apache2: httpd-2.0.53
PHP Version 4.3.10 als mod


Vielen Dank im Voraus
 
Last edited by a moderator:
Gehauen wird hier niemand ;)
Erst war ich etwas erstaunt vom Ergebnis... nun habe ich eine leise Ahnung. Bitte poste einen Link zu deiner php4-phpino() oder hänge sie hier in den Anhang, damit ich etwas über die Apache-Settings erfahren kann.
Irgendwas stimmt bei dir mit den mime-types nicht so ganz.

P.s:
Hast du mod_mime bei Apache aktiviert?
 
Das ist interessant... werde mich heute Abend mit der Thematik nomma befassen.
 
server4downs said:
Das ist interessant... werde mich heute Abend mit der Thematik nomma befassen.

Yaaay, das wär nett :D !
Danke jetzt schonmal.

PS: Was ist denn das interresante daran?
 
Interessant hierbei ist, dass ich die Geschichte auf einer Suse 9.3-Maschine mit Apache2 bereits am Laufen habe.
So, nun hab ich von beiden die phpinfo() der PHP4-Version.
Was nun noch schön zu wissen wäre, ob ihr suexec einsetzt und wie euer vhost-Eintrag nun aussieht.
Postet doch einfach hier beide mal euren vhost-eintrag und schreibt genau, WO ihr diesen inkludiert habt. Solltet ihr suexec benutzen, wäre ein Blick in die Logs auch nicht gerade schlecht.
 
Hier der Vhost eintrag:

Code:
<VirtualHost 88.84.128.166:80>
        ServerName   ro-god.net:80
        ServerAlias  www.ro-god.net
        UseCanonicalName Off
        SuexecUserGroup         ro-god psacln
        DocumentRoot /var/www/vhosts/ro-god.net/httpdocs
        CustomLog  /var/www/vhosts/ro-god.net/statistics/logs/access_log plesklog
        ErrorLog   /var/www/vhosts/ro-god.net/statistics/logs/error_log
<IfModule mod_userdir.c>
        UserDir /var/www/vhosts/ro-god.net/web_users
</IfModule>
        ScriptAlias  /cgi-bin/ /var/www/vhosts/ro-god.net/cgi-bin/
        Alias  /plesk-stat /var/www/vhosts/ro-god.net/statistics/
        Alias  /webstat /var/www/vhosts/ro-god.net/statistics/webstat
        Alias  /webstat-ssl /var/www/vhosts/ro-god.net/statistics/webstat-ssl
        Alias  /ftpstat /var/www/vhosts/ro-god.net/statistics/ftpstat
        Alias  /anon_ftpstat /var/www/vhosts/ro-god.net/statistics/anon_ftpstat
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        <Directory /var/www/vhosts/ro-god.net/httpdocs>
        <IfModule sapi_apache2.c>
               php_admin_flag engine on
                php_admin_value open_basedir "/var/www/vhosts/ro-god.net/httpdocs:/tmp"
        </IfModule>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_value open_basedir "/var/www/vhosts/ro-god.net/httpdocs:/tmp"
        </IfModule>
                Options -Includes +ExecCGI
        </Directory>
        <Directory /var/www/vhosts/ro-god.net/web_users>
        <IfModule sapi_apache2.c>
                AddType text/plain .php .php4 .php3 .phtml
                php_admin_flag engine off
        </IfModule>
        </Directory>
        Alias "/error_docs" "/var/www/vhosts/ro-god.net/error_docs"
        ErrorDocument 400 /error_docs/bad_request.html
        ErrorDocument 401 /error_docs/unauthorized.html
        ErrorDocument 403 /error_docs/forbidden.html
        ErrorDocument 404 /error_docs/not_found.html
        ErrorDocument 500 /error_docs/internal_server_error.html
</VirtualHost>

...Steht zwar noch ne dicke Warnung oben, das man nichts verändern solle, aber das ist glaube ich aus recht unwichtig.

Include in der httpd.conf
 
Soweit ja ganz nett, aber jetzt muss ich genau wissen, WO das Zeugs von mir, sprich der CGI-Stuff für PHP in der httpd.conf steht.
Deine Plesk-Vhost-Datei wird irgendwo in der httpd.conf oder apache2.conf (sofern vorhanden) inkludiert.. sprich da steht was von
"Include /bla/bla/path/to/plesk/stuff/..."
Selbstverständlich muss mein "Salat" noch vor diesem Aufruf stehen. Sonst machts wenig Sinn ;)
Ist dem so?
 
Bis eben nicht, jetzt wird es zwar nichtmehr als Download angeboten - aber <? phpinfo(); ?> ist nicht wirklich ein ausgeführter script.
 
mod-exi said:
Bis eben nicht, jetzt wird es zwar nichtmehr als Download angeboten - aber <? phpinfo(); ?> ist nicht wirklich ein ausgeführter script.
Auch bei dir gilt: wenn du Hilfe erhalten willst musst du dich klar und deutlich und vor allem informativ äußern ;)
Hierzu gehören auch entsprechende Logauszüge.
Ansonsten bestünde auch das Angebot gegen ein gewisses Entgeld dir das zum Laufen zu bringen (kontaktier mich via PM dann bitte).
 
Back
Top