configuração Custom PHPINIDir no VirtualHost afetando outros VirtualHosts

3

Um dos clientes solicitou uma configuração pessoal do php.ini para o site dele, então eu configurei seu VirtualHost da seguinte forma:

<VirtualHost *:80>
    DocumentRoot "/home/alex/www.domain.tld"
    ServerName www.domain.tld
    AssignUserID alex alex
    PHPINIDir /home/alex/php.ini
</VirtualHost>

O cliente criou o arquivo php.ini em / home / alex / que contém apenas esta configuração:

session.save_path = "/home/alex/.php_sessions/"

Afinal, ele começou a reclamar que ele vê todos os outros arquivos de sessão gerados pelos sites de outros clientes.

Depois de fazer alguns problemas básicos, percebi que suas configurações do php.ini estão afetando todos os sites especificados no httpd-vhosts.conf.

A questão é por quê? Já que PHPINIDir é especificado apenas dentro de um específico VirtualHost ?

    
por Alex G 29.12.2012 / 22:51

1 resposta

5

Virtualhosts individuais não podem ter seu próprio PHPINIDir porque o arquivo php.ini é lido quando o apache + mod_php é inicializado, antes mesmo de começar a manipular as solicitações. Por qualquer motivo, em vez de dar um aviso com esse uso, essa diretiva definirá o diretório INI global e continuará em seu caminho alegre.

Em vez disso, você deve usar as diretivas php_value , php_flag , php_admin_value e php_admin_flag do Apache para substituir as configurações específicas desejadas para esse host virtual. (Veja aqui ) Nesse caso, você faria:

<VirtualHost *:80>
    DocumentRoot "/home/alex/www.domain.tld"
    ServerName www.domain.tld
    AssignUserID alex alex
    php_value session.save_path "/home/alex/.php_sessions/"
</VirtualHost>

Nesse caso, ele carregaria o arquivo php.ini padrão e, em seguida, alteraria session.save_path para o diretório fornecido, apenas para esse host virtual.

    
por 29.12.2012 / 23:14