运行 phpmyadmin 和 suphp

tho*_*hor 7 linux php5 suphp apache-2.2

我有一个 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>
Run Code Online (Sandbox Code Playgroud)

是否有可能在使用 suphp 时启用系统 phpmyadmin(可能通过标准 libapache2-mod-php5)?如何?

tho*_*hor 11

在 /etc/apache2/mods-available/suphp.conf 以下两行:

AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php
Run Code Online (Sandbox Code Playgroud)

应改为:

AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp
Run Code Online (Sandbox Code Playgroud)

然后,在 /etc/suphp/suphp.conf 行

application/x-httpd-php=php:/usr/bin/php-cgi
Run Code Online (Sandbox Code Playgroud)

应改为:

application/x-httpd-suphp=php:/usr/bin/php-cgi
Run Code Online (Sandbox Code Playgroud)

然后, /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>
Run Code Online (Sandbox Code Playgroud)

到:

<Directory /usr/share>
    <IfModule mod_php5.c>
      AddType application/x-httpd-php .php .phtml .php3
      AddType application/x-httpd-php-source .phps
    </IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)

这样,所有 php 脚本都被分配了 x-httpd-suphp 类型,该类型由 suphp 处理。由于 /usr/share 中的文件禁用了 suphp,因此在该目录的 php5.conf 中,php 脚本获取 x-httpd-php 类型并由 mod_php5 处理。这样,除了 /usr/share 中系统安装的脚本之外,您可以为所有其他脚本保留 suphp。