MediaWiki-to-DokuWiki-Importer icon indicating copy to clipboard operation
MediaWiki-to-DokuWiki-Importer copied to clipboard

mysql settings from MediaWiki aren't used?

Open jakebiesinger opened this issue 11 years ago • 9 comments

I'm running Mediawiki 1.16.0 with the latest Dokuwiki (downloaded last week). My mediawiki LocalSettings.php include the following lines:

$wgDBtype           = "mysql";
$wgDBserver         = "localhost";
ini_set("mysql.default_socket", "/tmp/mysql.sock");

Unfortunately, when I try to run the converter's index.php, the converter complains about not reaching mysql on /var/lib/mysql/mysql.sock:

PHP Warning:  session_start(): open(/var/lib/php/session/sess_pcafi9ojl9vbglfu0vpbett572, O_RDWR) failed: Permission denied (13) in /extra/cbcl0/users/dokuwiki-2012-10-13/inc/init.php on line 151
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)PHP Warning:  Unknown: open(/var/lib/php/session/sess_pcafi9ojl9vbglfu0vpbett572, O_RDWR) failed: Permission denied (13) in Unknown on line 0
PHP Warning:  Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

Perhaps my save_path is off? Perhaps I need to change a setting in settings.php?

Thanks for your help!

jakebiesinger avatar Feb 12 '13 20:02 jakebiesinger

I think this error is caused by the PHP process not being able to create the session file. Line 151 in /extra/cbcl0/users/dokuwiki-2012-10-13/inc/init.php is a call to session_start() and looking at the pasted error it looks like it attempted to create /var/lib/php/session/sess_pcafi9ojl9vbglfu0vpbett572 but failed with a permission denied error. Are you running this manually from the command line as a different user than what's used for your web server?

tetsuo13 avatar Feb 13 '13 02:02 tetsuo13

I'm running from the command line as the same user as the mediawiki server, but a different user to the dokuwiki process (switching from one server to another). I don't have root on this machine so it shouldn't be able to create anything in /var/lib/php/...

Is there a way to specify, e.g., a different mysql.conf file?

jakebiesinger avatar Feb 13 '13 02:02 jakebiesinger

Start with the session save path first. Change src/MediaWiki2DokuWiki/index.php to add a call to session_save_path() and see if that addresses the session file creation and MySQL issue:

session_save_path('/tmp');

require 'settings.php';
require 'autoload.php';

new MediaWiki2DokuWiki_Environment($settings);

tetsuo13 avatar Feb 13 '13 02:02 tetsuo13

After updating as above, the error message is slightly different but the socket is still incorrect:

$ php index.php
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (2)

I also tried setting the default socket manually:

session_save_path('/tmp');
ini_set("mysql.default_socket", "/tmp/mysql.sock");

require 'settings.php';
require 'autoload.php';

new MediaWiki2DokuWiki_Environment($settings);

with the same error message.

jakebiesinger avatar Feb 13 '13 18:02 jakebiesinger

That's progress anyway. Try changing the way it connects to the database. Change the dbConnect() function in src/MediaWiki2DokuWiki/MediaWiki/Settings.php to the following:

    public function dbConnect()
    {
        $dsn = $this->settings['wgDBtype'] . ':'
             . 'dbname=' . $this->settings['wgDBname'] . ';'
             . 'unix_socket=/tmp/mysql.sock';

        return new PDO(
            $dsn,
            $this->settings['wgDBuser'],
            $this->settings['wgDBpassword']
        );
    }

If that resolves the MySQL error then I can look into making this change permanent by conditionally building the DSN.

tetsuo13 avatar Feb 13 '13 19:02 tetsuo13

Hey, slick. Looks like that did it. My wiki is converting now. I'll let you know if there are any issues!

jakebiesinger avatar Feb 13 '13 19:02 jakebiesinger

Please try the latest version. I've modified it to be aware of MySQL sockets.

tetsuo13 avatar Feb 16 '13 03:02 tetsuo13

I have just downloaded 0.3.5 today and this appears to still be a problem. I tried the suggestions here to no avail so far. I have an old mediawiki that has been upgraded to 1.22.6 and an empty instance of the latest version of dokuwiki:

php index.php SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

thomasmaerz avatar May 29 '14 22:05 thomasmaerz

I also tried 0.3.6, same result.

thomasmaerz avatar May 29 '14 22:05 thomasmaerz