HOWTO : SuPHP

I've tried this solution in CentOS 4.2 (x86_64) with PHP 4.4.2

There is a bug in PHP when you do the configure.
You must edit the file
/usr/local/directadmin/customapache/php-4.4.2/pear/Makefile.frag

and change line 6 to read:
PEAR_INSTALL_FLAGS = -n -dshort_open_tag=0 -dsafe_mode=0 -dmemory_limit=-1

instead of:
PEAR_INSTALL_FLAGS = -n -dshort_open_tag=0 -dsafe_mode=0

after that you can configure PHP like is said before (remove --with-apxs and include --enable-force-cgi-redirect)

PS: Dont forget that the binary of PHP in /usr/bin will be written over, so it's better to make a backup copy.
 
i got this :

[root@box4 suphp-0.6.1]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [Tue Mar 7 15:24:22 2006] [warn] module perl_module is already loaded, skipping
Syntax error on line 386 of /etc/httpd/conf/httpd.conf:
Invalid command 'suPHP_Engine', perhaps mis-spelled or defined by a module not included in the server configuration
[FAILED]


what is the problem ?
 
error message is clearly in english..

Invalid command 'suPHP_Engine', perhaps mis-spelled or defined by a module not included in the server configuration
 
since i installed suphp,

all plugins of directadmin dont appear in each user panel..

i mean installatron + awstats options in user panel do not show..

do you know why ?
 
its ok , i forgot to chmod 755 the bin of php ( the cli )

now its ok, but now few websites have this error :

Warning: Unknown(): open(/tmp/sess_e2a331a498d9ae602c6b4f956aa7bfa0, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0


and in the /tmp the file are there but with the UID root:root
???

3 or 4 files sess_ are with this group ( 0:0 )
any idea ?

i use suphp-0.5
 
The sessions that exist at the moment are owned by the user apache is running on (if that's root, you should change that 'nobody' or 'apache' or something!). Now all php documents are executed by different users, so it's impossible to read previous sessions.

An option is to just delete all those sessions and your problems will be fixed. Otherwise you could chmod the session to have proper read/write permissions for all users.

Jochem
 
i have rm -rf * in /tmp

but its continu

[root@box4 tmp]# ls -ln
total 188
-rw------- 1 897 897 0 Mar 10 14:19 sess_2603c01ada36184f4b71ffbca9be00bf
-rw------- 1 897 897 0 Mar 10 14:19 sess_57e937c99caac762baa760c446a4baed
-rw------- 1 897 897 0 Mar 10 14:18 sess_6893398349d313d18da6abeb3480c1f4
-rw------- 1 724 724 0 Mar 10 14:15 sess_6c83a9f30fab855b1a85ddb0a9bced7f
-rw------- 1 897 897 0 Mar 10 14:18 sess_6f13b3021111342da9d4e06103dc553d
-rw------- 1 897 897 0 Mar 10 14:18 sess_71b082e89342a7e11c74d40fd889bafa
-rw------- 1 0 0 165396 Mar 10 14:19 sess_74be7999392bac3940ec1b43f20d3e43
-rw------- 1 0 0 22 Mar 10 14:16 sess_7d998915db500c7a92736318feb4b288
-rw------- 1 916 916 190 Mar 10 14:18 sess_8169a9ea38d5c7b70f1e3301fa088ca2
-rw------- 1 897 897 0 Mar 10 14:15 sess_8c53c2470d0400b74e755651fe9c4b32
-rw------- 1 897 897 0 Mar 10 14:18 sess_9002913f0fd202c0e2f4617ff0eb5e76
-rw------- 1 897 897 0 Mar 10 14:19 sess_99d2d86897f916365a8504eefaadf131
-rw------- 1 0 0 22 Mar 10 14:16 sess_9d14e36495331ae304db58fbf8957925
-rw------- 1 897 897 0 Mar 10 14:19 sess_d15e7d918b51a1e2d8a69f86fc99b963

why again other files in 0:0 ( root ) ??
 
I do not have sapi/cgi/php folder? only sapi/cgi with this files
CREDITS Makefile.frag README.FastCGI cgi_main.c config9.m4 getopt.c libfcgi php.sym php_getopt.h

This is cofigure command:
# ./configure --with-apxs2 --with-curl --with-curl-dir=/usr/local/lib --with-gd --with-gd-dir=/usr/local/lib --with-gettext --with-jpeg-dir=/usr/local/lib --with-kerberos --with-mcrypt --with-mhash --with-mysql=/usr --with-pear --with-png-dir=/usr/local/lib --with-xml --with-zlib --with-zlib-dir=/usr/local/lib --with-zip --enable-bcmath --enable-calendar --enable-ftp --enable-magic-quotes --enable-sockets --enable-track-vars --enable-mbstring --enable-memory-limit --enable-fastcgi
# make
without make install
 
I do not have <IfModule mod_php4.so> :/

It`s my httpd.conf
ServerRoot "/etc/httpd"

PidFile /var/run/httpd.pid

Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15


##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 50
MaxClients 50
MaxRequestsPerChild 100
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 100
</IfModule>

# perchild MPM
# NumServers: constant number of server processes
# StartThreads: initial number of worker threads in each server process
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# MaxThreadsPerChild: maximum number of worker threads in each server process
# MaxRequestsPerChild: maximum number of connections per server process
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 100
</IfModule>

Listen 0.0.0.0:80

#
# Dynamic Shared Object (DSO) Support
#
LoadModule php4_module /usr/lib/apache/libphp4.so
LoadModule frontpage_module /usr/lib/apache/mod_frontpage.so
LoadModule perl_module /usr/lib/apache/mod_perl.so
#LoadModule security_module /usr/lib/apache/mod_security.so



User apache
Group apache

ServerAdmin admin@localhost
UseCanonicalName Off
DocumentRoot "/var/www/html"

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

<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

#this is setup, but via alternate means
UserDir disabled

AddHandler cgi-script .cgi .pl
<Directory /home/*>
AllowOverride All
Options MultiViews -Indexes FollowSymlinks IncludesNoExec +Includes
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

DirectoryIndex index.html index.html.var index.htm index.shtml index.php index.php4 index.php3 index.phtml index.cgi

AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off

EnableMMAP on
EnableSendfile on

ErrorLog /var/log/httpd/error_log
LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
LogFormat "%b" bytes

CustomLog /var/log/httpd/access_log combined

# Set to one of: Full | OS | Minor | Minimal | Major | Prod
ServerTokens Full
ServerSignature On

Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

IndexOptions FancyIndexing VersionSort

#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions. These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

#
# DefaultIcon is which icon to show for files which do not have an icon
# explicitly set.
#
DefaultIcon /icons/unknown.gif

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

# DefaultLanguage en

AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
AddDefaultCharset ISO-8859-2

AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
# See http://www.iana.org/assignments/character-sets
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis

AddType application/x-tar .tgz
AddType application/x-httpd-php .inc .php .php4 .php3 .phtml
AddType application/x-httpd-php-source .phps

#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have nothing
# to do with the FancyIndexing customization directives above.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler cgi-script .cgi
AddHandler imap-file map
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully

#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .example.com
#</Location>

#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
#</Location>

<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>


#Start DirectAdmin Settings
Alias /config /var/www/html/redirect.php
Alias /phpMyAdmin /var/www/html/phpMyAdmin/
Alias /phpmyadmin /var/www/html/phpMyAdmin/
Alias /webmail /var/www/html/webmail/
Alias /squirrelmail /var/www/html/squirrelmail/

ErrorDocument 400 /400.shtml
ErrorDocument 401 /401.shtml
ErrorDocument 403 /403.shtml
ErrorDocument 404 /404.shtml
ErrorDocument 500 /500.shtml

#All NameVirtualHost lines are in this file
#Don't remove this line or apache will generate errors.
Include /etc/httpd/conf/ips.conf

LogFormat "%b \"%r\"" homedir
#The default site for the server.
<VirtualHost MyIP:80>
ServerAdmin webmaster@localhost
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot /var/www/html
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>

<VirtualHost MyIP:443>
ServerName localhost
ServerAdmin webmaster@localhost
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot /var/www/html
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key

CustomLog /var/log/httpd/homedir.log homedir
</VirtualHost>
 
Last edited:
i have PHP 4.4.2 as apache module (API is Apache Handler 2.0) already working :)
 
I have suPHP already installed by for example user JOHN can include files from /home/admin/public_html :/
 
[Sun Mar 19 20:59:50 2006] [error] Script (/home/XXXXX/domains/XXXXX/public_html/m.php) is writeable by others
I have this in logs after installation and add suPHP :/
Apache 2.0.55, PHP 4.4.2, suPHP-0.5, DirectAdmin, CentOS 4.2
 
Back
Top