Hide Forgot
Originally reported at: https://www.openshift.com/forums/openshift/php-mysql-zend-framework
Workaround: rhc ssh <app> cat - >> .htaccess <<EOF php_value mysql.default_socket "${OPENSHIFT_MYSQL_DB_SOCKET}" php_value mysqli.default_socket "${OPENSHIFT_MYSQL_DB_SOCKET}" EOF
https://github.com/openshift/origin-server/pull/5046
Commit pushed to master at https://github.com/openshift/li https://github.com/openshift/li/commit/bb7c5a7b39d62bd02acd9dafa89284c49b51fef0 Fix Zend Server MySQL default socket Bug 1039849 - https://bugzilla.redhat.com/show_bug.cgi?id=1039849
Commit pushed to master at https://github.com/openshift/origin-server https://github.com/openshift/origin-server/commit/c5a136bdff8f467be5574c03bb5323680ada87a4 Fix PHP MySQL default socket Bug 1039849 - https://bugzilla.redhat.com/show_bug.cgi?id=1039849
Commit pushed to master at https://github.com/openshift/li https://github.com/openshift/li/commit/3d27c9fddd047e7a9176ab8dc73c4252d1dc348b Update Cartridge Versions for Stage Cut Mark the following cartridges for incompatible upgrade: - metrics and rockmongo because of the logshifter code - zend because of the Bug 1039849
Checked on devenv_4608, issue still can be reproduced. For the new created apps, after add mysql to php/zend, and restart the app, the mysql.default_socket is still using the system default value. [php54-bmengdev.dev.rhcloud.com 533a2e8a06a098edde000001]\> php -i |grep socket mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock mysqli.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock [php54-bmengdev.dev.rhcloud.com 533a2e8a06a098edde000001]\> grep "mysql" php/configuration/etc/php.ini |grep socket mysql.default_socket = mysqli.default_socket = For migration parts, apps which does not have a mysql db added will use the system mysql sock path in php.ini file. [zend61-bmeng1stg.stg.rhcloud.com 52e4eaa42587c8d766000043]\> grep "mysql" zend/php-5.4/etc/php.ini |grep socket pdo_mysql.default_socket=/var/lib/mysql/mysql.sock mysql.default_socket=/var/lib/mysql/mysql.sock mysqli.default_socket=/var/lib/mysql/mysql.sock Assign this back.
(In reply to Meng Bo from comment #8) > For migration parts, apps which does not have a mysql db added will use the > system mysql sock path in php.ini file. There's no MySQL socket available in apps that doesn't have MySQL cartridge attached. When the default_socket directive is empty => PHP defaults it to /var/lib/mysql/mysql.sock. That's expected behavior.
Commit pushed to master at https://github.com/openshift/li https://github.com/openshift/li/commit/2ba97bc6193c42737be50011a31129ec26822762 Fix Zend migration Bug 1081879 - https://bugzilla.redhat.com/show_bug.cgi?id=1081879 Bug 1039849 - https://bugzilla.redhat.com/show_bug.cgi?id=1039849
But for the new created app with mysql added, it will still using the system default path as the gear mysql.default_socket? [phpnew-bmeng1stg.stg.rhcloud.com 533bd9ad2587c8a75d0001d3]\> php -i |grep default_socket mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock mysqli.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock [phpnew-bmeng1stg.stg.rhcloud.com 533bd9ad2587c8a75d0001d3]\> env|grep MYSQL OPENSHIFT_MYSQL_DIR=/var/lib/openshift/533bd9ad2587c8a75d0001d3/mysql/ OPENSHIFT_MYSQL_DB_PORT=3306 OPENSHIFT_MYSQL_DB_HOST=127.10.165.2 OPENSHIFT_MYSQL_DB_PASSWORD=c2YVnWaQR8QX OPENSHIFT_MYSQL_IDENT=redhat:mysql:5.5:0.2.10 OPENSHIFT_MYSQL_DB_USERNAME=adminTxMEL5e OPENSHIFT_MYSQL_DB_SOCKET=/var/lib/openshift/533bd9ad2587c8a75d0001d3/mysql//socket/mysql.sock OPENSHIFT_MYSQL_DB_URL=mysql://adminTxMEL5e:c2YVnWaQR8QX.165.2:3306/ OPENSHIFT_MYSQL_LD_LIBRARY_PATH_ELEMENT=/opt/rh/mysql55/root/usr/lib64
@Meng Bo, yeah, you're right. The logic doesn't count with MySQL cartridge being added/removed to the application during it's existence. It only works for the existing applications that already have MySQL cartridge added, or for new applications that have mysql added from the very beginning (one-liner rhc command). Marking UpcomingRelease, because of low priority. This is not a TO_STAGE issue. ZEND - I'm going to fix this during Sprint 43. PHP - Sprint 43 functionality already fixes this issue naturally (PHP.INI gets processed on every cartridge start/restart)
How to test: $ rhc app create z61 zend-6.1 --no-git $ rhc ssh z61 "cat zend/php-5.4/etc/php.ini | grep default_socket" > default_socket_timeout=60 > pdo_mysql.default_socket= > mysql.default_socket= > mysqli.default_socket= $ rhc cartridge-add mysql-5.1 --app z61 $ rhc app-restart z61 $ rhc ssh z61 "cat zend/php-5.4/etc/php.ini | grep default_socket" > default_socket_timeout=60 > pdo_mysql.default_socket=/var/lib/openshift/***/mysql//socket/mysql.sock > mysql.default_socket=/var/lib/openshift/***9/mysql//socket/mysql.sock > mysqli.default_socket=/var/lib/openshift/***/mysql//socket/mysql.sock
https://github.com/openshift/li/pull/2568
Commit pushed to master at https://github.com/openshift/li https://github.com/openshift/li/commit/6459988cd141360f159e731b4f983e6be58118e3 Fix Zend MySQL default socket Bug 1039849 - https://bugzilla.redhat.com/show_bug.cgi?id=1039849
User must restart the php gear to pick up new MYSQL_SOCKET value.
Checked on devenv_4638, issue has been fixed. For both zend and php cartridge, the mysql.default_sock can be updated to correct value. # rhc ssh zend61 "cat zend/php-5.4/etc/php.ini | grep default_socket" default_socket_timeout=60 pdo_mysql.default_socket=/var/lib/openshift/5343c657cfca16b1820001fe/mysql//socket/mysql.sock mysql.default_socket=/var/lib/openshift/5343c657cfca16b1820001fe/mysql//socket/mysql.sock mysqli.default_socket=/var/lib/openshift/5343c657cfca16b1820001fe/mysql//socket/mysql.sock # rhc ssh php54 "cat php/configuration/etc/php.ini | grep default_socket" default_socket_timeout = 60 mysql.default_socket =/var/lib/openshift/5343c670cfca16e53100021b/mysql//socket/mysql.sock mysqli.default_socket =/var/lib/openshift/5343c670cfca16e53100021b/mysql//socket/mysql.sock Move bug to verified.