Configurando o PHP para instalação existente do MySQL

3

Estou assumindo funções administrativas básicas para um ex-funcionário tech do meu cliente. Em um servidor do CentOS, tenho o seguinte:

Apache, PHP e MySQL. Ele tinha o PHP instalado, mas não o configurou com a extensão MySQL (eu suponho porque o servidor hospedava apenas um site baseado em rails).

Então eu preciso reconfigurar o PHP para usar a extensão MySQL. Aqui está o atual PHP configurado (de phphinfo ();):

'./configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--
target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--
bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--
includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--
localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--
infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-
file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--
disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--
with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--
with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-
png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--
with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' 
'--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-
trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--
with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--
enable-dbx' '--enable-dio' '--with-mime-magic=/usr/share/file/magic.mime' '--without-
sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--with-
apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--
disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-
xmlwriter'

Você pode ver que ele tem - sem-mysql lá.

Quando você configura o PHP para usar --with-mysql, você tem que especificar o caminho para o mysql, certo? Ou a fonte do mysql? Ou algo assim? Algo assim:

--with-mysql=/usr/local/mysql

O problema com esta configuração existente é que o MySQL já está instalado, exceto que eu não sei onde ele está instalado em ... Eu sei que existe /etc/init.d/mysqld. Eu também encontrei os seguintes diretórios:

/ usr / lib / mysql / / usr / include / mysql / / usr / share / mysql /

Alguém pode me apontar na direção certa aqui? Eu não sei qual diretório usar com --with-mysql na configuração do PHP.

ATUALIZAÇÃO

Ok, então eu tenho o PHP reconfigurado, refeito e instalado. Agora, quando eu reiniciar o Apache, recebo o seguinte:

[warn] module php5_module is already loaded, skipping

É porque o php já estava rodando no servidor antes? Eu olhei para o httpd.conf e só tem uma instância do php5_module sendo carregada ...

No entanto, quando agora visualiza o phpinfo (); mostra o PHP sendo usado na nova versão atualizada que acabei de configurar / instalar.

Além disso, o phpinfo (); mostra mysql como sendo usado, porém quando tento instalar digamos, Wordpress (que usa MySQL), o Wordpress está dando esse erro:

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

Onde devo procurar agora?

UPDATE # 2

Ainda não há solução até o momento. Eu passei pela configuração do PHP para incluir o Mysql e o phpinfo (); (sim, estou usando um arquivo .php para ver isso) mostra --with-mysql = shared, / usr (por outra sugestão de usuários abaixo). O PHP ainda não está reconhecendo a extensão do MySQL como estando na configuração.

Eu não entendo qual é o caminho que você deve colocar no final de --with-mysql =? Eu tenho os seguintes diretórios que encontrei:

/usr/bin/ contains:
mysql (executable?)

/usr/lib/mysql/ contains:
libdbug.a    libmyisammrg.a      libmysqlclient_r.so         libmysqlclient.so         libmystrings.a  mysqlbug
libheap.a    libmysqlclient.a    libmysqlclient_r.so.15      libmysqlclient.so.15      libmysys.a      mysql_config
libmyisam.a  libmysqlclient_r.a  libmysqlclient_r.so.15.0.0  libmysqlclient.so.15.0.0  libvio.a

/usr/include/mysql/ contains:
chardefs.h  keymaps.h       my_config.h       my_global.h      mysql_com.h      mysql_time.h     readline.h    sql_common.h       tilde.h
decimal.h   m_ctype.h       my_config_i386.h  my_list.h        mysqld_ername.h  mysql_version.h  rlmbutil.h    sql_state.h        typelib.h
errmsg.h    m_string.h      my_dbug.h         my_net.h         mysqld_error.h   my_sys.h         rlprivate.h   sslopt-case.h      xmalloc.h
history.h   my_alloc.h      my_dir.h          my_no_pthread.h  mysql_embed.h    my_xml.h         rlshell.h     sslopt-longopts.h
keycache.h  my_attribute.h  my_getopt.h       my_pthread.h     mysql.h          raid.h           rltypedefs.h  sslopt-vars.h

/usr/share/mysql/ contains:
charsets  english               french     italian      my-innodb-heavy-4G.cnf  mysql_fix_privilege_tables.sql  norwegian     romanian  spanish
czech     errmsg.txt            german     japanese     my-large.cnf            mysql_system_tables_data.sql    norwegian-ny  russian   swedish
danish    estonian              greek      korean       my-medium.cnf           mysql_system_tables.sql         polish        serbian   ukrainian
dutch     fill_help_tables.sql  hungarian  my-huge.cnf  my-small.cnf            mysql_test_data_timezone.sql    portuguese    slovak

Algum disso ajuda?

UPDATE 3

Sim, estou usando hosts virtuais. Aqui está o meu arquivo conf:

Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
        ServerName thedomain.com
        ServerAlias www.thedomain.com
        DocumentRoot /u1/thedomain.com/public
        RailsEnv production
</VirtualHost>

<VirtualHost *:80>
        ServerName subdomain.thedomain.com
        DocumentRoot /u1/subdomain.thedomain.com/public
</VirtualHost>

Estou tentando configurar uma instalação básica do Wordpress no subdomínio. Ainda estou recebendo esse erro:

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

RESOLVIDO

Acabei de adicionar --with-mysql (sem caminho) à configuração do PHP e a reinstalei, e o PHP acabou de encontrar o que precisava do MySQL por conta própria, aparentemente. Obrigado pela percepção de todos.

    
por Jake Wilson 11.12.2009 / 22:46

5 respostas

3

A menos que o mysql esteja instalado em um local não padrão, você deve ser capaz de especificar --with-mysql sem nenhum caminho. você também pode querer --with-mysqli para obter a nova interface mysql melhorada.

    
por 11.12.2009 / 23:10
1

ATUALIZAÇÃO

você está usando hosts virtuais? Você pode verificá-lo. Apenas uma instância do PHP permitia uma árvore de configuração do Apache (para um processo do apache). Declarar várias instâncias do PHP em hosts virtuais diferentes não tem efeito.

    
por 12.12.2009 / 00:31
1

Em relação à sua atualização: O aviso do apache informa que o módulo php5 do apache já foi adicionado em algum lugar da configuração. Se você passar pela configuração e, mais importante, incluir arquivos de configuração adicionais, verá algo como:

#PHP Stuff
AddModule mod_php5.c

em mais de um lugar. Não tema, não é um erro importante, e você pode simplesmente ignorá-lo (ou através dos seus arquivos de configuração, grep -ir 'mod_php5' /etc/httpd.d /*).

Em relação ao caminho --with-mysql, no meu caso os binários mysql podem ser encontrados em / usr / local / bin / my * e / usr / local / sbin / my *, então meu --with- A linha mysql pode ser vista aqui:

'./configure' '--with-pear' '--disable-cli' '--with-apache=/usr/src/apache_1.3.41' '--with-mysql=/usr/local' '--enable-safe-mode'

(isso é apenas um exemplo, não será necessariamente correto para sua configuração). No seu caso eu tentaria --with-mysql = / usr / share / mysql (fora das opções que você deu parece ser mais provável que seja correto. Tente ls / usr / share / mysql / bin / my * )

Se você instalou o pecl junto com o php, você pode usar o pecl para instalar o mysql / mysqli sem recompilar todo o resto. Eu costumo usar seu shell cpan-like, mas me disseram que você pode fazer "pecl install mysql" e "pecl install mysqli" Se você usar o pecl, você pode adicionar o mysql.so e mysqli.so como extension = lines no seu php.ini, certificando-se de que o seu extension_dir está correto. No entanto, do jeito que você está fazendo, o suporte a mysql deve ser compilado em php, o que torna desnecessárias as adições ao php.ini.

Por último - apenas por experiência pessoal, se você continuar mexendo recompilando o php e começar a obter erros de linker realmente estranhos (ou problemas estranhos em geral) faça backup do seu Makefile / config.he faça um make clean primeiro. Isso limpará todos os arquivos de objetos intermediários.

Erm, mais uma nota - se você usar o php -i na linha de comando para obter o seu phpinfo (); faça um arquivo de teste phpinfo.php, já que os módulos cli e apache podem ter arquivos php.ini diferentes. / p>

Agora que terminei esse acompanhamento, não tenho certeza se isso realmente solucionará seu problema, mas espero que ajude.

    
por 12.12.2009 / 01:01
0

A string de configuração acima não se parece muito com a do pacote PHP PHP CentOS / RHEL, então eu assumirei que o PHP foi manualmente configurado e instalado na máquina.

Para uma máquina CentOS / RHEL recente, o seguinte sinalizador para o script de configuração do PHP deve ser suficiente:

--with-mysql=shared,/usr

(como usado no pacote oficial do CentOS / RHEL).

Você precisará dos pacotes mysql e mysql-devel para compilar com sucesso e usar as bibliotecas MySQL.

Para referência: Em um sistema CentOS / RHEL usando totalmente o gerenciamento de pacotes, o seguinte irá instalar o PHP e a extensão MySQL:

yum install php php-mysql

Lockie

    
por 11.12.2009 / 23:18
0

Há alguns dias, escrevi sobre compilar o PHP no Linux: link

Desculpe, mas em russo (e não consigo traduzi-lo agora). Você pode usar o Google Tradutor em vez disso.

Em suma, você deve usar estas opções no x64 Fedora:

-with-mysql = / usr / bin -with-libdir = lib64

e depois de fazer & & make install verifique se libphp5.so apareceu no diretório de módulos do apache

    
por 12.12.2009 / 00:16