web-dev-qa-db-ja.com

既存のMySQLインストール用にPHP

私はクライアントの元tech従業員の基本的な管理業務を引き継いでいます。 CentOSサーバーには次のものがあります。

Apache、PHPおよびMySQL。彼はPHPをインストールしましたが、MySQL拡張機能を使用して構成しませんでした(サーバーがRailsベースのみをホストしていたためだと思います)ウェブサイト)。

したがって、MySQL拡張機能を使用するには、PHPを再構成する必要があります。現在のPHP configure(from 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'

彼がそこに-without-mysqlを持っていることがわかります。

--with-mysqlを使用するようにPHPを構成する場合、mysqlへのパスを指定する必要がありますか?またはmysqlソース?またはそのようなものですか?次のようなものです:

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

この既存のセットアップの問題は、MySQLがすでにインストールされていることです。ただし、どこにインストールされているかはわかりません.../etc/init.d/mysqldがあることはわかっています。次のディレクトリも見つかりました。

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

誰かが私をここで正しい方向に向けることができますか? PHP構成で--with-mysqlで使用するディレクトリがわかりません。

[〜#〜] update [〜#〜]

さて、PHPを再構成し、作り直してインストールしました。Apacheを再起動すると、次のようになります。

[warn] module php5_module is already loaded, skipping

これは、phpが以前にサーバーですでに実行されていたためですか? httpd.confを調べたところ、php5_moduleのインスタンスが1つだけロードされています...

ただし、phpinfo();を表示するとPHPは、構成/インストールしたばかりの新しい更新バージョンで使用されていることを示しています。

また、phpinfo(); mysqlが使用されていることを示していますが、たとえばWordpress(MySQLを使用))をインストールしようとすると、Wordpressはこのエラーを出します:

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

私は今どこを見るべきですか?

更新#2

今のところまだ解決策はありません。 PHPでMysqlとphpinfo();を含めるように構成しました(はい、これを表示するためにfile.phpを使用しています)は--with-mysql = shared、/usr(以下の別のユーザーの提案による)PHPは、MySQL拡張機能が構成内にあることをまだ認識していません。

--with-mysql =の最後に配置することになっているパスが何であるかわかりませんか?私が見つけた次のディレクトリがあります:

/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

そのいずれかが役立ちますか?

更新

はい、仮想ホストを使用しています。これが私の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>

基本的なWordpressインストールをサブドメインにセットアップしようとしています。それでもこのエラーが発生します:

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

[〜#〜]解決済み[〜#〜]

--with-mysql(パスなし)をPHP configに追加して再インストールすると、PHP MySQLから必要なものが見つかりましたどうやら。皆さんの洞察に感謝します。

3
Jake Wilson

Mysqlが非標準の場所にインストールされていない限り、パスなしで--with-mysqlを指定できるはずです。 --with-mysqliで新しく改善されたmysqlインターフェースを取得することもできます。

3
Craig

更新

仮想ホストを使用していますか?確認できます。 1つのApache構成ツリー(1つのApacheプロセスに対して)に許可されるインスタンスは1つだけPHP)。異なる仮想ホストで複数のPHPインスタンスを宣言しても効果はありません。

1
Oleg Chirukhin

更新について:Apache警告は、php5Apacheモジュールが構成のどこかにすでに追加されていることを示しています。構成を実行し、さらに重要なことに追加の構成ファイルを含めると、次のようなものが表示されます。

#PHP Stuff
AddModule mod_php5.c

複数の場所で。恐れることはありません。これは重要なエラーではありません。無視してかまいません(または、構成ファイルを介したgrep、grep -ir'mod_php5 '/etc/httpd.d/*)。

--with-mysqlパスに関しては、私の場合、mysqlバイナリは/ usr/local/bin/my *および/ usr/local/sbin/my *にあるため、-with-mysql行は次のようになります。ここで見られる:

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

(これは単なる例であり、必ずしもセットアップに適しているとは限りません)。あなたの場合、私は--with-mysql =/usr/share/mysqlを試してみます(指定したオプションのうち、正しい可能性が最も高いようです。ls/ usr/share/mysql/bin/my *を試してください。 )

Phpと一緒にpeclをインストールした場合は、実際にpeclを使用して、他のすべてを再コンパイルせずにmysql/mysqliをインストールできます。私は通常、cpanのようなシェルを使用しますが、「peclinstallmysql」と「peclinstallmysqli」を実行できると言われています。peclを使用する場合は、mysql.soとmysqli.soをextension =行として追加できます。 php.iniで、extension_dirが正しいことを確認します。ただし、あなたがそれをしている方法では、mysqlサポートはそれ自体がphpにコンパイルされるべきであり、php.iniへの追加は不要です。

最後に、個人的な経験から、phpの再コンパイルをいじり続けて、本当に奇妙なリンカーエラー(または一般的に奇妙な問題)が発生し始めた場合は、Makefile/config.hをバックアップし、最初にmakecleanを実行します。これにより、すべての中間オブジェクトファイルがクリアされます。

えーと、もう1つ注意してください-コマンドラインからphp -iを使用してphpinfo();を取得する場合は、cliモジュールとApacheモジュールで異なるphp.iniファイルを使用できるため、phpinfo.phpテストファイルを作成してください。

私は実際にこのフォローアップを終えたので、それが実際にあなたの問題を解決するかどうかはわかりませんが、うまくいけば役立つでしょう。

1
Some Linux Nerd

上記の構成文字列は、PHP5 CentOS/RHEL PHPパッケージの構成文字列とはあまり似ていないため、PHPは手動で構成され、にインストールされていると想定します。この機械。

最近のCentOS/RHELマシンの場合、PHPのconfigureスクリプトに対する次のフラグで十分です。

--with-mysql=shared,/usr

(公式のCentOS/RHEL PHPパッケージで使用されているように)。

正常にコンパイルしてMySQLライブラリを使用するには、mysqlおよびmysql-develパッケージが必要です。

参考:パッケージ管理を完全に使用するCentOS/RHELシステムでは、以下はPHPおよびMySQL拡張機能をインストールします。

yum install php php-mysql

ロッキー

0
Lockie

数日前、LinuxでのコンパイルPHP: http://users.livejournal.com/__hedin/182480.html

申し訳ありませんが、ロシア語で(そして今は翻訳できません)。代わりにGoogle翻訳を使用できます。

つまり、x64Fedoraでは次のオプションを使用する必要があります。

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

make && make installの後、libphp5.soがApacheモジュールディレクトリに表示されているかどうかを確認します

0
Oleg Chirukhin