用的是lavarel框架,在框架基礎上使用workerman,接受和發(fā)送都是正常的,就是在OnworkerStart函數(shù)中連接數(shù)據(jù)庫的時候報錯??Undefined class constant 'MYSQL_ATTR_INIT_COMMAND';
?
引用的是在網(wǎng)上下載的Connection.php文件
/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
這貼的是網(wǎng)頁的 phpinfo信息 ? workerman是基于PHP-CLI開發(fā)的, 和網(wǎng)頁環(huán)境的PHP不是一碼事,讓你使用 php -m | grep pdo 檢查呢, 不是看phpinfo。
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
我安裝了下,以上是要 讓我執(zhí)行 make test? 為啥是test??
我環(huán)境如下:
ubuntu系統(tǒng)下安裝了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開發(fā)運行的,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