我有一个Debian Lenny Web服务器.它使用libapache2-mod-suphp运行apache2.不幸的是,suphp无法使用phpmyadmin,因为phpmyadmin安装在/usr/share / phpmyadmin并由root拥有,而suphp在这个目录中禁用了它的引擎:
$cat /etc/apache2/mods-enabled/suphp.conf
<IfModule mod_suphp.c>
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php
<Directory />
suPHP_Engine on
</Directory>
# By default,disable suPHP for debian packaged web applications as files
# are owned by root and cannot be executed by suPHP because of min_uid.
<Directory /usr/share>
suPHP_Engine off
</Directory>
</IfModule>
是否有可能在使用suphp时启用系统phpmyadmin(可能通过标准libapache2-mod-php5)?怎么样?
解决方法
在/etc/apache2/mods-available/suphp.conf中有以下两行:
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml suPHP_AddHandler application/x-httpd-php
应改为:
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml suPHP_AddHandler application/x-httpd-suphp
然后,在/etc/suphp/suphp.conf行中
application/x-httpd-php=php:/usr/bin/php-cgi
应改为:
application/x-httpd-suphp=php:/usr/bin/php-cgi
然后,应该改变/etc/apache2/mods-available/php5.conf的内容:
<IfModule mod_php5.c> AddType application/x-httpd-php .php .phtml .php3 AddType application/x-httpd-php-source .phps </IfModule>
至:
<Directory /usr/share>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
</Directory>
这样,所有php脚本都被分配了x-httpd-suphp类型,由suphp处理.由于对/usr/share中的文件禁用了suphp,因此在php5.conf中,php脚本获取x-httpd-php的类型并由mod_php5处理.这样,除了/usr/share中系统安装的脚本外,您保留所有其他脚本的suphp.
