ubuntuusers.de

suPHP einrichten

Status: Ungelöst | Ubuntu-Version: Server 12.04 (Precise Pangolin)
Antworten |

power

Anmeldungsdatum:
29. Juni 2008

Beiträge: Zähle...

Hi zusammen,

Ich möchte auf meinem Ubuntuserver (aktuellste Version) Apache2 mit suPHP einrichten.

Diese Schritte habe ich schon gemacht:

1
2
3
aptitude install suphp-common libapache2-mod-suphp
a2enmod suphp
/etc/init.d/apache2 restart

Danach habe ich den VirtualHost angepasst:

 <VirtualHost *:80
         ServerAdmin webmaster@localhost
         ServerName test.domain.local
         DocumentRoot /var/www/test.domain.local
         <Directory /
                 Options FollowSymLinks
                 AllowOverride None
         </Directory
         <Directory /var/www/
                 Options Indexes FollowSymLinks MultiViews
                 AllowOverride None
                 Order allow,deny
                 allow from all
         </Directory
 
         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
         <Directory "/usr/lib/cgi-bin"
                 AllowOverride None
                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                 Order allow,deny
                 Allow from all
         </Directory
 
         ErrorLog ${APACHE_LOG_DIR}/error.log
 
         # Possible values include: debug, info, notice, warn, error, crit,
         # alert, emerg.
         LogLevel warn
 
         CustomLog ${APACHE_LOG_DIR}/access.log combined
 
     Alias /doc/ "/usr/share/doc/"
     <Directory "/usr/share/doc/"
         Options Indexes MultiViews FollowSymLinks
         AllowOverride None
         Order deny,allow
         Deny from all
         Allow from 127.0.0.0/255.0.0.0 ::1/128
     </Directory
 
   suPHP_Engine on
   suPHP_UserGroup www-data www-data
   AddHandler x-httpd-php .php .php3 .php4 .php5
   suPHP_AddHandler x-httpd-php
 
 </VirtualHost

Ich möchte suPHP erstmals unter www-data laufen lassen. Ich denke den Benutzer später zu ändern dürfte das kleinste Problem sein.

Wenn ich jetzt aber den Apache2 neustarten will, bekomme ich diesen Fehler:

 Syntax error on line 42 of /etc/apache2/sites-enabled/test.domain.local:
 Invalid command 'suPHP_UserGroup', perhaps misspelled or defined by a module not included in the server configuration
 Action 'configtest' failed.
 The Apache error log may have more information.
    ...fail!

Warum kennt Apache2 diese Konfiguration nicht? Diese gehört doch zu suPHP. http://www.suphp.org/DocumentationView.html?file=apache/CONFIG

Im Apache2 Error Log steht:

 [Mon Aug 27 21:40:11 2012] [error] [client 192.168.0.11] SoftException in Application.cpp:350: UID of script "/var/www/test.domain.local/index.php" is smaller than min_uid
 [Mon Aug 27 21:40:11 2012] [error] [client 192.168.0.11] Premature end of script headers: index.php
 [Mon Aug 27 21:40:11 2012] [error] [client 192.168.0.11] SoftException in Application.cpp:350: UID of script "/var/www/test.domain.local/index.php" is smaller than min_uid
 [Mon Aug 27 21:40:11 2012] [error] [client 192.168.0.11] Premature end of script headers: index.php

www-data hat die UID und GID 33. Laut Konfiguration muss die UID und GID mindestens 10 sein, was in diesem Fall stimmt. Darum versteh ich den Fehler von Apache2 nicht?

Dies ist meine /etc/suphp/suphp.conf:

 [global]
 ;Path to logfile
 logfile=/var/log/suphp/suphp.log
 
 ;Loglevel
 loglevel=info
 
 ;User Apache is running as
 webserver_user=www-data
 
 ;Path all scripts have to be in
 docroot=/var/www:${HOME}/public_html
 
 ;Path to chroot() to before executing script
 ;chroot=/mychroot
 
 ; Security options
 allow_file_group_writeable=false
 allow_file_others_writeable=false
 allow_directory_group_writeable=false
 allow_directory_others_writeable=false
 
 ;Check wheter script is within DOCUMENT_ROOT
 check_vhost_docroot=true
 
 ;Send minor error messages to browser
 errors_to_browser=false
 
 ;PATH environment variable
 env_path=/bin:/usr/bin
 
 ;Umask to set, specify in octal notation
 umask=0077
 
 ; Minimum UID
 min_uid=10
 
 ; Minimum GID
 min_gid=10
 
 
 [handlers]
 ;Handler for php-scripts
 application/x-httpd-suphp="php:/usr/bin/php-cgi"
 
 ;Handler for CGI-scripts
 x-suphp-cgi="execute:!self"

Wie bekomme ich suPHP zum Laufen? Wäre cool wenn mir jemand helfen kann, dass suPHP nachher auf dem Server läuft.

Gruss Power

sven-s

Avatar von sven-s

Anmeldungsdatum:
5. August 2010

Beiträge: 700

* Only supported when compiled with setid-mode "force" or "paranoid" * Specify the user- and groupname to run PHP-scripts with. This setting can only be used within a <Directory> or <Location> context. Example: suPHP_UserGroup foouser bargroup

Aus deinem geposteten Link.

Laut dieser Beschreibung kann das, was du vorhast, schon mal nicht funktionieren. Zum anderen besteht noch die Frage, ob die Ubuntu-Maintainer die Quellen mit dieser Option kompiliert haben.

power

(Themenstarter)

Anmeldungsdatum:
29. Juni 2008

Beiträge: 129

Danke für deine Antwort. Manchmal sieht man vor lauter Bäumen den Wald nicht mehr.

Ich hab suPHP neu kompiliert nach diese Anleitung: http://archive.terminal21.de/2009/07/ubuntu-suphp-und-der-suphp-usergroup-fehler.html

Jetzt läuft schon mal der Apache2, jedoch bekomme ich error 500 und im Apache Error Log steht:

[Mon Aug 27 22:37:13 2012] [error] [client 192.168.0.11] SecurityException in Application.cpp:496: Handler not found in configuration
[Mon Aug 27 22:37:13 2012] [error] [client 192.168.0.11] Caused by KeyNotFoundException in Configuration.cpp:234: Handler "application/x-httpd-suphp" not found
[Mon Aug 27 22:37:13 2012] [error] [client 192.168.0.11] Premature end of script headers: index.php
Den VHost habe ich mittlerweile geändert auf:

<VirtualHost *:80>

  suPHP_Engine on
        ServerAdmin webmaster@localhost
        ServerName test.domain.local
        DocumentRoot /var/www/test.domain.local
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

        <Directory />
                Options FollowSymLinks
                AllowOverride None
                suPHP_UserGroup paranoid paranoid
        </Directory>

</VirtualHost>

Ich habe auch noch diese Lösung probiert, aber der Fehler 500 kommt immer noch. http://serverfault.com/questions/211791/suphp-not-working

sven-s

Avatar von sven-s

Anmeldungsdatum:
5. August 2010

Beiträge: 700

MH, okay. Mein Wissen mit suPHP haelt sich auch in Grenzen, aber laut dem Log stimmt etwas mit dem Handler nicht, das wird auch in dem letzten Link nochmal ganz unten geschrieben.

Ich habe jetzt eine Loesung gefunden, unzwar fuege in der VHost-Datei folgende zwei Zeilen hinzu:

<Directory />
        Options FollowSymLinks
        AllowOverride None
        suPHP_UserGroup paranoid paranoid
        AddType application/x-httpd-php .php .php3 .php4 .php5
        suPHP_AddHandler application/x-httpd-php
</Directory>

Die Datei /etc/apache2/mods-available/suphp.conf sollte aber weiterhin existieren.

TheDarkRose

Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

suphp, ich weiß ja nicht. Du magst lieber suexec in verbindung mit fcgid nehmen!

power

(Themenstarter)

Anmeldungsdatum:
29. Juni 2008

Beiträge: 129

Also ich habe die zwei Linien noch angefügt. Jedoch kommt leider noch der gleiche Fehler.

power

(Themenstarter)

Anmeldungsdatum:
29. Juni 2008

Beiträge: 129

suphp, ich weiß ja nicht. Du magst lieber suexec in verbindung mit fcgid nehmen!

Naja, ich dachte suPHP ist schnell eingerichtet und wollte mir das anschauen, aber es happert ja schon bei der Konfiguration.

sven-s

Avatar von sven-s

Anmeldungsdatum:
5. August 2010

Beiträge: 700

Dann habe ich noch dies gefunden:

Why do my scripts not work and why do I get an "Premature end of script headers" in the error_log?
You probably have installed the CLI version of PHP, but you need the CGI version. Copy the file
/build/path/sapi/cgi/php to /where/ever/you/have/installed/bin/php to use the CGI version.

Quelle

power

(Themenstarter)

Anmeldungsdatum:
29. Juni 2008

Beiträge: 129

Ja das hab ich auch noch gefunden, aber php-cli ist nicht installiert.

root@server:/var# php
The program 'php' is currently not installed.  You can install it by typing:
apt-get install php5-cli

sven-s

Avatar von sven-s

Anmeldungsdatum:
5. August 2010

Beiträge: 700

Okay, dann faellt mir auch nichts mehr ein. Es wird sich sicherlich noch einer finden, der sich mit suPHP auskennt. Ich weiss leider nicht mehr, woran es noch liegen koennte.

power

(Themenstarter)

Anmeldungsdatum:
29. Juni 2008

Beiträge: 129

Ja, hoffe es antwortet noch jemand. Sobald ich die Lösung habe werde ich die posten und einen Blogbeitrag darüber schreiben. Damit der Nächste nicht mehr so lang wie ich suchen muss. Danke für deine vielen Antworten und deine Hilfe.

TheDarkRose

Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

power schrieb:

suphp, ich weiß ja nicht. Du magst lieber suexec in verbindung mit fcgid nehmen!

Naja, ich dachte suPHP ist schnell eingerichtet und wollte mir das anschauen, aber es happert ja schon bei der Konfiguration.

Nein, beides gleich kompliziert. nur suexec/fcgid bringt mehr performance

http://wiki.carrot-server.com/userdokus/apache_php_fcgi

Antworten |