ports/102561: rc.d ordering results in apache + mod_php5 starting without pdo mysql support
Andrew Tulloch
andrew at biliskner.demon.co.uk
Sun Aug 27 13:12:10 UTC 2006
>Number: 102561
>Category: ports
>Synopsis: rc.d ordering results in apache + mod_php5 starting without pdo mysql support
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Aug 27 12:40:19 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Andrew Tulloch
>Release: 6.1-STABLE
>Organization:
>Environment:
FreeBSD xxxxxxxx.dev 6.1-STABLE FreeBSD 6.1-STABLE #0: Sat Aug 26 13:54:04 BST 2006 root at xxxxxxxx.dev:/usr/obj/usr/src/sys/XXXXXXXX i386
>Description:
Due to rc.d script ordering on boot the apache2 port starting before the mysql client libs script is run. This results in the following error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20050922/pdo_mysql.so' - Shared object "libmysqlclient.so.15" not found, required by "pdo_mysql.so" in Unknown on line 0
[Sun Aug 27 13:00:35 2006] [notice] Apache/2.0.59 (FreeBSD) PHP/5.1.5 configured -- resuming normal operations
Apache is now running with PHP, but with PDO without PDO mysql support because the mysql libs were not present at the time apache was started.
>How-To-Repeat:
Install apache (www/apache2) php5 (www/mod_php5) with PDO (databases/pecl-PDO) and install PDO mysql (databases/pecl-PDO_MYSQL).
Reboot the machine and you should see the error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20050922/pdo_mysql.so' - Shared object "libmysqlclient.so.15" not found, required by "pdo_mysql.so" in Unknown on line 0
[Sun Aug 27 13:00:35 2006] [notice] Apache/2.0.59 (FreeBSD) PHP/5.1.5 configured -- resuming normal operations
In /var/log/httpd-error.log
>Fix:
Create a more modern startup script so that mysqlclient libs are present before other daemons are started as it seems old style startup scripts are processed last.
Something like:
#!/bin/sh
#
#
# PROVIDE: mysqlclient
# REQUIRE: NETWORKING SERVERS
# BEFORE: DAEMON
# KEYWORD: shutdown
. /etc/rc.subr
name="mysqlclient"
rcvar=`set_rcvar`
start_cmd="mysqlclient_start"
load_rc_config $name
mysqlclient_start() {
/sbin/ldconfig -m /usr/local/lib/mysql
}
run_rc_command "$1"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list