PDO support enabled
PDO drivers sqlite, mysql, pgsql
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
Directive Local Value Master Value
pdo_mysql.default_socket no value no value
/path/to/php -m | grep pdo 检查下你的 pdo扩展 以及pdo_mysql 扩展
如下是PHPinfo的信息:
PDO support enabled
PDO drivers sqlite, mysql, pgsql
pdo_mysql
PDO Driver for MySQL enabled
Client API version mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
Directive Local Value Master Value
pdo_mysql.default_socket no value no value
这贴的是网页的 phpinfo信息 ? workerman是基于PHP-CLI开发的, 和网页环境的PHP不是一码事,让你使用 php -m | grep pdo 检查呢, 不是看phpinfo。
/var/www# php -m | grep pdo
pdo_mysql
pdo_pgsql
pdo_sqlite
这样是没有pdo就不行?有pdo_mysql
我这个是在docker容器里显示的信息,能否加个qq沟通下?
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files: /usr/local/include/php/
Installing PDO headers: /usr/local/include/php/ext/pdo/
warning: pdo (pdo.so) is already loaded!
find . -name *.gcno -o -name *.gcda | xargs rm -f
find . -name *.lo -o -name *.o | xargs rm -f
find . -name *.la -o -name *.a | xargs rm -f
find . -name *.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la modules/ libs/
/var/www# php -m | grep pdo
pdo_mysql
pdo_pgsql
pdo_sqlite
我安装了下,以上是要 让我执行 make test? 为啥是test??
php -m | grep -i pdo 看看显示的什么?
/var/www# php -m | grep -i pdo
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
这说明 pdo扩展 以及pdo_mysql 扩展 已经安装OK
那还有其他原因吗,一直说找不到在PDO.php中的常量
我环境如下:
ubuntu系统下安装了docker容器,在docker容器里安装了mysql,php-fpm,nginx等,容器外有个项目(lavarel框架,workerman),然后启动这个workerman,会不会是因为这个workerman不是用的容器里php-fpm?应该也不会呀,如果不是用的容器里的php-fpm,这个workerman也跑不起来吧?
1、PHP有多种运作方式,其中包括:PHP-CLI 和 PHP-FPM,这两者不是一码事。
2、workerman是基于PHP-CLI开发运行的,PHP-FPM则是作为WEB服务器的扩展模块运作的的。
3、其他可能的原因,stackoverflow里写的比较详细,你仔细参考下:
https://stackoverflow.com/questions/2424343/undefined-class-constant-mysql-attr-init-command-with-pdo
4、另外PHP5.3有BUG, 详见官方说明:
https://bugs.php.net/bug.php?id=47224
装错地方了吧,在容器外用得在容器外装pdo pdo_mysql两个扩展啊。docker里装有什么用
workerman用不到容器里的php-fpm?是这样的吗?我的web服务都是用的容器里的php-fpm并能正常运行
@5212:用不到,而且说了好几次呢: PHP-CLI 和 PHP-FPM 这两者不是一码事。
我在容器外执行如下:
ubuntu@VM-0-5-ubuntu:~$ php -m |grep -i pdo
PDO
@5212: 那不是明显缺少 pdo_mysql 扩展么
这方面确实不懂,那我workerman为啥能启动呢,不需要php支持吗?容器外没有安装php呀
@5212: 容器外没装PHP? 那不是你上面说的在容器外执行的PHP?
之前只有在docker容器里安装,应该是容器里的php映射到容器外了