Executando mod_php e suPHP no mesmo tempo

2

Eu fui recentemente do Debian Lenny com o 5.2.x e pude usar mod_php para qualquer arquivo php que não estivesse localizado em / home / e suPHP para todos os arquivos php que estavam localizados em / home /.

Eu fiz isso porque eu precisava de um php.ini padrão (me deu todos os recursos do php) para meus sites em / var / www / e eu não queria ter que alterar o proprietário de todos os arquivos .php de raiz. Eu também tinha um php.ini padrão para todos os arquivos / home / php sem recursos perigosos.

Esta foi a configuração:

    <IfModule mod_suphp.c>
        <Directory /home/>
                AddType application/x-httpd-php .php .php3 .php4 .php5
                suPHP_AddHandler application/x-httpd-php
                suPHP_Engine on

                suPHP_ConfigPath /home/shared/
        </Directory>
    </IfModule>

Isso estava funcionando perfeitamente, mas recentemente eu atualizei para o PHP para 5.3.5 do dotdeb (Lenny não tem php oficial 5.3). Isso teve problemas estranhos no lenny como não exibir erros corretamente e pouco bits tid. Então eu decidi atualizar do lenny para o squeeze. Php desinstalado (junto com isso veio suphp) e reinstalado com a nova fonte. Agora tenho o 5.3.3-7 com o Debian Squeeze, mas não consigo mais que mod_php e suPHP rodem ao mesmo tempo. O mod_php sempre funcionará e não há erros nos logs do apache2 ou suphp. Se eu desabilitei o mod_php, o suPHP funcionará.

Existe alguma coisa que estou fazendo errado?

    
por ParoX 13.02.2011 / 06:14

2 respostas

3

Consegui realizar o que estava atrás colocando php_admin_flag engine Off no topo do mod_suphp.c . Também precisei ter certeza de que usei suPHP_Engine off por padrão.

Resultado final:

    <IfModule mod_suphp.c>
        <Directory /home/>
                php_admin_flag engine Off
                AddType application/x-httpd-php .php .php3 .php4 .php5
                suPHP_AddHandler application/x-httpd-php
                suPHP_Engine on

                suPHP_ConfigPath /home/shared/
        </Directory>
    </IfModule>

Apenas para aqueles que se perguntam, isso é o que eu tinha para o meu /home/shared/php.ini , eles serão todos /home usuários php.ini , a menos que eu especifique de forma diferente em vhosts:

allow_url_fopen = Off 
display_errors = On 
display_startup_errors = On 
log_errors = On 
error_reporting = E_ALL 
error_log = "/var/log/apache2/php_user_errors.log"
expose_php = Off 
magic_quotes_sybase = Off 
register_globals = Off
open_basedir = "/home:/tmp"
short_open_tag = On
session.save_path = "/tmp"
disable_functions = "phpinfo, apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,curl_exec,curl_multi_exec,dir,disk_free_space,diskfreespace,dl,eval,exec,fsockopen,highlight_file,ini_alter,ini_restore,ini_set,openlog,parse_ini_file,passthru,pclose,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,readfile,set_time_limit,shell_exec,show_source,stream_socket_server,symlink,system,virtual"
    
por 13.02.2011 / 13:12
0

I needed a default php.ini (given me all features of php) for my websites in /var/www/ and I didn't want to have to change the owner of all the .php files from root. I also had a default php.ini for all the /home/ php files without dangerous features.

Não seria mais simples substituir as configurações relevantes do ini nas configurações do httpd.conf (então permitir substituir nenhuma para impedir que elas sejam alteradas no .htaccess?). Algo como ....

<Directory /home/*/public_html>
   AllowOverride FileInfo AuthConfig Limit
   Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
   php_admin_flag safe_mode On
   <Limit GET POST OPTIONS>
    Order allow,deny
    Allow from all
   </Limit>
   <LimitExcept GET POST OPTIONS>
    Order deny,allow
    Deny from all
   </LimitExcept>
</Directory>
    
por 13.02.2011 / 10:28