[PHP-users 25485] dl('libsqlite.so')関数が "Invalid library (maybe not a PHP library) "で失敗

田中 幹 tanaka.miki @ pfu.fujitsu.com
2005年 4月 26日 (火) 20:05:32 JST


はじめまして。apache + PHP + SQLiteでサーバ構築を試みている初心者です。
よろしくお願いいたします。早速お助けのお願いで恐縮なのですが…、

【現象】

以下のような.phpテストファイル実行でlibsqlite.soのロードに100%失敗して
しまいます。

<?php
        echo "process start";
if (!extension_loaded('sqlite')) {
        if (!dl('libsqlite.so')) {
                echo "debug 1";
                exit('接続できません');
        }
}

error logファイルには以下のように記録され、

[26-Apr-2005 12:49:52] PHP Warning:  Unknown(): Invalid library (maybe not a PHP
 library) 'libsqlite.so'  in Unknown on line 0

ブラウザ画面表示も以下の通りdl関数の異常終了を示しています。

process start
Warning: dl(): Invalid library (maybe not a PHP library) 'libsqlite.so' in /home/web/htdocs/test2.php
on line 4
debug 1接続できません



【動作環境】

/usr/local/lib/php.iniは以下の通りです。

engine = On
short_open_tag = On
asp_tags = Off
precision    =  12
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
expose_php = On
max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60     ; Maximum amount of time each script may spend parsing r
equest data
memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
error_log = /home/web/logs/php_error.log
variables_order = "EGPCS"
register_globals = Off
register_argc_argv = On
post_max_size = 8M
gpc_order = "GPC"
magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".:/usr/local/lib/php"
doc_root =
user_dir =
extension_dir = /usr/local/lib
enable_dl = On
file_uploads = On
upload_max_filesize = 2M
allow_url_fopen = On
default_socket_timeout = 60
extension=libsqlite3.so
define_syslog_variables  = Off
sendmail_from = me @ localhost.com
sql.safe_mode = Off
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = -1
mysql.trace_mode = Off
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
dbx.colnames_case = "unchanged"
bcmath.scale = 0
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_dividend    = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off
ingres.allow_persistent = On
ingres.max_persistent = -1
ingres.max_links = -1
ingres.default_database =
ingres.default_user =
ingres.default_password =
pfpro.defaulthost = "test-payflow.verisign.com"
pfpro.defaultport = 443
pfpro.defaulttimeout = 30
sockets.use_system_read = On


またapacheの初期起動スクリプト/etc/init.d/apache内で以下のパス定義を追加
しています。

LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/local/apache/libexec
export LD_LIBRARY_PATH

apacheのhttpd.conf内の以下の定義によりlibphp4.soおよびlibphp5.soのapache
起動時のロードには成功しています。

#LoadModule php5_module libexec/libphp5.so
LoadModule php4_module libexec/libphp4.so


マシンは以下の1台だけなのですが、

・SunOS 5.8 Generic_117350-24 sun4u sparc SUNW,Ultra-5
・ローダ:OS標準(/usr/ccs/bin/ld)
・gcc 3.4.2
・bison 1.875d
・db 4.2.52.NC
・expat 1.95.5
・gdbm 1.8.3
・libiconv 1.8
・libxml2 2.6.16
・openssl 0.9.7f

ソフト構成については試行錯誤を繰り返しました。しかしすべて上記現象になり
ます。

《構成1》
libphp5.soライブラリについては、一年前[PHP-users 15055]で羽淵殿が悩んで
おられたShared Libraryがmakeで生成されない問題が当方Solaris 8システムで
も発生し、Makefileを直接修正して作成したため不完全かも知れません。

・apache 1.3.27	:本マシンでmake

・PHP 5.0.4	:本マシンでmake(注1)
# ldd libphp5.so
        libresolv.so.2 =>        /usr/lib/libresolv.so.2
        libm.so.1 =>     /usr/lib/libm.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libxml2.so.2 =>  /usr/local/lib/libxml2.so.2
        libz.so.1 =>     /usr/lib/libz.so.1
        libiconv.so.2 =>         /usr/local/lib/libiconv.so.2
        libc.so.1 =>     /usr/lib/libc.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        libpthread.so.1 =>       /usr/lib/libpthread.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
        libthread.so.1 =>        /usr/lib/libthread.so.1

・SQLite 3.2.1	:本マシンでmake
 # ldd libsqlite.so
        libc.so.1 =>     /usr/lib/libc.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1

《構成2》
そこで別マシン(これもSolaris 8ですが何故かこちらはmakeに成功)の
libphp4.soをコピーしてテストしました。

・apache 1.3.27	:構成1と同じ

・PHP 4.3.10	:別マシンでmake
 # ldd libphp4.so
        libresolv.so.2 =>        /usr/lib/libresolv.so.2
        libm.so.1 =>     /usr/lib/libm.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libc.so.1 =>     /usr/lib/libc.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1

・SQLite 3.2.1	:構成1と同じ

《構成3》
それでも現象が変わらないため、http://sunfreeware.com/ で現在入手可能な以
下の構成に全取替えしてみましたが結果は同じでした。T_T

・apache 2.0.53	:パッケージインストール

・PHP 5.0.2	:パッケージインストール
 # ldd libphp5.so
        libresolv.so.2 =>        /usr/lib/libresolv.so.2
        libm.so.1 =>     /usr/lib/libm.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libsocket.so.1 =>        /usr/lib/libsocket.so.1
        libz.so =>       /usr/lib/libz.so
        libxml2.so.2 =>  /usr/local/lib/libxml2.so.2
        libiconv.so.2 =>         /usr/local/lib/libiconv.so.2
        libc.so.1 =>     /usr/lib/libc.so.1
        libmp.so.2 =>    /usr/lib/libmp.so.2
        libpthread.so.1 =>       /usr/lib/libpthread.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
        libthread.so.1 =>        /usr/lib/libthread.so.1

・SQLite 2.8.13	:パッケージインストール
 # ldd libsqlite.so
        libc.so.1 =>     /usr/lib/libc.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1


異なる構成でまったく同じ現象なので何か初歩的なミスを犯しているのでしょう
が初心者の当方にはまったく見当もつかずお手上げ状態です。

本MLの過去ログも検索してみた積りですが類似の問題は見つけられませんでした。
お気づきの点が何かありましたらご教示いただきたくよろしくお願いいたします。



-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Tanaka Miki      PFU Limited      tanaka.miki @ pfu.fujitsu.com



PHP-users メーリングリストの案内