AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 428800
Accepted
Sam McAfee
Sam McAfee
Asked: 2008-12-23 18:15:17 +0800 CST2008-12-23 18:15:17 +0800 CST 2008-12-23 18:15:17 +0800 CST

Como posso dizer ao Apache qual PHP usar?

  • 772

Estou executando o Apache2 em um Mac OS X (10.5) . Acabei de compilar o PHP 5.2.8 e finalmente comecei pdo-mysqla trabalhar (ou assim eu acho).

Este comando de terminal:

php --version

está mostrando 5.2.8 e tenho os módulos corretos instalados.

Mas, quando eu faço um phpinfo(), o Apache descarta o PHP 5.2.6 (minha versão anterior, sem pdo_mysql).

Como eu digo ao Apache qual PHP carregar? O httpd.conftem a linha:

LoadModule php5_module        libexec/apache2/libphp5.so

Mas, eu não sei o que ou onde isso é.

É isso que eu tenho que mudar?

php apache-2.2 pdo
  • 5 5 respostas
  • 140025 Views

5 respostas

  • Voted
  1. Best Answer
    slm
    2013-01-17T18:02:37+08:002013-01-17T18:02:37+08:00

    Eu acho que todas essas respostas não estão realmente respondendo à pergunta. O nível raiz pode ser determinado executando o comando httpd -V. Isso mostrará com quais opções o daemon do Apache foi construído em tempo de compilação. Isto é o que controla onde httpddetermina onde procurar por sua configuração. arquivos e módulos .so por padrão.

    Por exemplo:

    % httpd -V
    Server version: Apache/2.2.17 (Unix)
    Server built:   Dec 17 2010 11:58:24
    Server's Module Magic Number: 20051115:25
    Server loaded:  APR 1.3.12, APR-Util 1.3.9
    Compiled using: APR 1.3.12, APR-Util 1.3.9
    Architecture:   32-bit
    Server MPM:     Prefork
      threaded:     no
        forked:     yes (variable process count)
    Server compiled with....
     -D APACHE_MPM_DIR="server/mpm/prefork"
     -D APR_HAS_SENDFILE
     -D APR_HAS_MMAP
     -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
     -D APR_USE_SYSVSEM_SERIALIZE
     -D APR_USE_PTHREAD_SERIALIZE
     -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
     -D APR_HAS_OTHER_CHILD
     -D AP_HAVE_RELIABLE_PIPED_LOGS
     -D DYNAMIC_MODULE_LIMIT=128
     -D HTTPD_ROOT="/etc/httpd"
     -D SUEXEC_BIN="/usr/sbin/suexec"
     -D DEFAULT_PIDLOG="logs/httpd.pid"
     -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
     -D DEFAULT_LOCKFILE="logs/accept.lock"
     -D DEFAULT_ERRORLOG="logs/error_log"
     -D AP_TYPES_CONFIG_FILE="conf/mime.types"
     -D SERVER_CONFIG_FILE="conf/httpd.conf"
    

    A linha chave nessa saída é o arquivo HTTPD_ROOT. Isso define onde o ROOTdiretório do Apache deve iniciar, /etc/httpdno meu caso, ao procurar por config. arquivos e módulos.

    NOTA: Isso ROOTnão é a mesma coisa que DocumentRoot. Isso ROOTé específico para como o httpddaemon foi compilado, DocumentRooté para especificar onde o httpddaemon deve começar a procurar o conteúdo real da web (arquivos .html e outros).

    Para o meu httpd.confarquivo, tenho as seguintes linhas de carga:

    LoadModule auth_basic_module modules/mod_auth_basic.so
    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule authn_file_module modules/mod_authn_file.so
    

    Dado isso, o caminho completo para seus módulos seria, por exemplo:

    /etc/httpd/modules/mod_auth_basic.so
    

    Isto é de um sistema CentOS 5.x , mas a técnica ainda está apta.

    BTW, pode ficar um pouco confuso porque no caso do CentOS os arquivos são organizados fisicamente aqui:

    % ls /usr/lib/httpd/modules/
    libphp5.so            mod_authnz_ldap.so      mod_dav_fs.so      mod_headers.so       mod_perl.so            mod_speling.so
    

    ... e então acessível ao daemon Apache, httpd, através deste caminho:

    % ls -l /etc/httpd/
    total 12
    drwxr-xr-x 2 root root 4096 Apr 26  2011 conf
    drwxr-xr-x 3 root root 4096 Apr 26  2011 conf.d
    -rw-r--r-- 1 root root   18 Feb 24  2009 htpasswd
    lrwxrwxrwx 1 root root   19 Apr 26  2011 logs -> ../../var/log/httpd
    lrwxrwxrwx 1 root root   27 Apr 26  2011 modules -> ../../usr/lib/httpd/modules
    lrwxrwxrwx 1 root root   13 Apr 26  2011 run -> ../../var/run
    

    O moduleslink conecta /etc/httpd--> /usr/lib/httpd/modules.

    • 17
  2. Rob Kennedy
    2008-12-23T19:14:16+08:002008-12-23T19:14:16+08:00

    Você pode encontrar arquivos em seu sistema com o locatecomando:

    #localize libphp5.so
    

    Ele imprimirá os caminhos completos de todos os arquivos com esse nome. Eu tenho um em /usr/libexec/apache2/libphp5.so.

    • 4
  3. Eaten by a Grue
    2013-01-17T20:34:14+08:002013-01-17T20:34:14+08:00

    O diretório pai dos módulos carregados em httpd.conf (como: libexec/apache2/libphp5.so) é definido pela ServerRootdiretiva que, por padrão, é normalmente definida como /usr. Eu não recomendaria mudar isso, mas pode ser útil para alguém saber exatamente onde exatamente esse caminho está definido.

    O site do Apache diz o seguinte sobre ServerRoot :

    Caminhos relativos em outras diretivas de configuração (como Include ou LoadModule, por exemplo) são considerados relativos a esse diretório.

    além disso, os comentários padrão do arquivo httpd.conf são:

    ServerRoot: A parte superior da árvore de diretórios sob a qual são mantidos os arquivos de configuração, erro e log do servidor.

    • 4
  4. Tautologistics
    2008-12-23T19:11:23+08:002008-12-23T19:11:23+08:00

    O Apache deve estar procurando por módulos em "/usr/libexec/httpd/". Lá você encontrará um arquivo ou link simbólico chamado "libphp5.so". Se for um link simbólico, você precisará vincular novamente ao novo 5.2.8 libphp5.so, caso contrário, apenas copie o 5.2.8 libphp5.so para "/usr/libexec/httpd/" e reinicie o apache com "sudo apachectl restart" .

    • 3
  5. user2935688
    2015-03-28T14:09:43+08:002015-03-28T14:09:43+08:00

    Eu tinha um Apache e PHP instalado em um dos servidores. Isso foi instalado pelo administrador de sistema anterior. Tanto o Apache quanto o PHP foram compatíveis com a fonte. Além disso, havia um PHP padrão instalado. Então para saber qual PHP é usado pelo Apache. eu executo o comando abaixo

       <Install Dir of PHP>/bin/php -i | grep apxs
    

    Isso me deu o caminho para apxs do apache

      APACHE_HOME/bin/apxs
    

    Isso me deu informações sobre qual Apache está sendo usado por este php. O php padrão deu erro quando digitei

    #php -i | grep apxs 
    
     Failed loading opcache.so:  opcache.so: cannot open shared object file: No    such file or directory PHP Warning:  PHP Startup: Unable to load dynamic library     '<PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so' - <PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so: undefined symbol: OnUpdateLongGEZero in Unknown on line 0
    

    Dessa forma, consegui descobrir o php usado pelo Apache.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso dizer ao Apache qual PHP usar?

    • 5 respostas
  • Marko Smith

    Como fechar um soquete à força em TIME_WAIT?

    • 7 respostas
  • Marko Smith

    Como você copia um disco rígido físico para um disco rígido virtual VMware?

    • 11 respostas
  • Marko Smith

    Como despejar um banco de dados do Microsoft SQL Server em um script SQL?

    • 9 respostas
  • Marko Smith

    Como posso portar para frente com o iptables?

    • 8 respostas
  • Marko Smith

    Como vincular o servidor MySQL a mais de um endereço IP?

    • 8 respostas
  • Marko Smith

    Execute o script Oracle SQL e saia do sqlplus.exe via prompt de comando

    • 11 respostas
  • Martin Hope
    Sam McAfee Como posso dizer ao Apache qual PHP usar? 2008-12-23 18:15:17 +0800 CST
  • Martin Hope
    Rehan Como fechar um soquete à força em TIME_WAIT? 2008-09-04 04:57:26 +0800 CST
  • Martin Hope
    Nick Berardi Como você copia um disco rígido físico para um disco rígido virtual VMware? 2008-10-23 14:38:49 +0800 CST
  • Martin Hope
    Matt Sheppard Como despejar um banco de dados do Microsoft SQL Server em um script SQL? 2008-08-25 17:47:52 +0800 CST
  • Martin Hope
    Stu Como posso portar para frente com o iptables? 2008-12-06 13:06:59 +0800 CST
  • Martin Hope
    BlaM Como vincular o servidor MySQL a mais de um endereço IP? 2008-09-03 08:04:18 +0800 CST
  • Martin Hope
    JoshL Execute o script Oracle SQL e saia do sqlplus.exe via prompt de comando 2008-09-23 15:33:09 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve