Hello,

I have a problem with the Drupal 6 installation.

Settings:
Version Apache : Apache/2.2.22
Version MySQL : mysql Ver 14.14 Distrib 5.5.28
Version PHP 5.2.17

I try to install Drupal as usual (copy default.settings.php -> settings.php...).
Then I go to "http://localhost" with my browser to set up the installation.
But at the database configuration, when I confirm my settings, I have the HTTP 500 Internal server error.

If I refresh the page, I can still continue the installation until I finish it.
The problem now comes when I try to go to admin pages like modules. I can't access to these pages and I got once more the HTTP 500 Internal server error. But the weird thing is that I can still go to create contents pages and add contents : and it works !

I have checked the error.log of Apache and this is what I got:

[Fri Jun 26 17:05:40 2015] [notice] Parent: Received shutdown signal -- Shutting down the server.
[Fri Jun 26 17:05:40 2015] [notice] Child 1164: Exit event signaled. Child process is ending.
[Fri Jun 26 17:05:41 2015] [notice] Child 1164: Released the start mutex
[Fri Jun 26 17:05:42 2015] [notice] Child 1164: All worker threads have exited.
[Fri Jun 26 17:05:42 2015] [notice] Child 1164: Child process is exiting
[Fri Jun 26 17:05:42 2015] [notice] Parent: Child process exited successfully.
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_pdo_mysql.dll' - Le module sp\xe9cifi\xe9 est introuvable.\r\n in Unknown on line 0
[Fri Jun 26 17:05:50 2015] [notice] Apache/2.2.25 (Win32) configured -- resuming normal operations
[Fri Jun 26 17:05:50 2015] [notice] Server built: Jul 10 2013 01:52:12
[Fri Jun 26 17:05:50 2015] [notice] Parent: Created child process 1944
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_pdo_mysql.dll' - Le module sp\xe9cifi\xe9 est introuvable.\r\n in Unknown on line 0
[Fri Jun 26 17:05:50 2015] [notice] Child 1944: Child process is running
[Fri Jun 26 17:05:50 2015] [notice] Child 1944: Acquired the start mutex.
[Fri Jun 26 17:05:50 2015] [notice] Child 1944: Starting 64 worker threads.
[Fri Jun 26 17:05:50 2015] [notice] Child 1944: Starting thread to listen on port 80.

sp\xe9cifi\xe9 module is not found.

So I checked that the file 'C:\Program Files (x86)\PHP\ext\php_pdo_mysql.dll' and it is indeed here.
In my php.ini file, 'extension=php_pdo_mysql.dll' is not in comment.

I can't find the solution to my problem. If someone has the solution or can help me.
Thank you so much.

Comments

John_B’s picture

Sometimes this happens because the php.ini file has the wrong directory set for extensions. It is also conceivable that permissions are wrong on the extension. Run a phpinfo.php file

<?php 
phpinfo();
?>

and check whether the PDO extension is loading.

If you prefer an easy life, put your site on Linux or (if you are stuck with Windows) a Linux virtual machine. (However, the wrong extensions directory issue also affects Linux.)

I always advise creating a virtual host when running Drupal because it is fiddly getting Drupal running on just http://localhost (assuming that is your default Apache host). However that is a separate and smaller issue.

RobOnema’s picture

First of all, thank you so much for your help.

As you asked I went to my php.info.php:

http://www.hostingpics.net/viewer.php?id=880032pdomysql.png

So as it seems the PDO_mysql extension does not work as intented.
I checked again my php.ini file:

extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
extension=php_openssl.dll
extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll

I don't know what to do anymore. Why isn't the pdo_mysql loading whereas I did activate it ?

(I have to work with Windows, so I cannot possibly change into Linux)

John_B’s picture

1. did you check my point about whether it is in the correct extensions directory?
2. did you check that the php.ini file you edited is the same one as is shown by phpinfo to be loaded in the browser (sometimes not the same as the one loaded on command line)?

(I have to work with Windows, so I cannot possibly change into Linux)

If you only have one PC you can always run Linux on a virtual machine. The sadly outdated Drupalpro is still fine as a user-friendly, easy VM for Drupal 6.

Acquia Dev Desktop (a Windows environment, not a virtual machine) also runs Drupal on Windows out of the box, usually in a relatively trouble-free way.

RobOnema’s picture

http://www.hostingpics.net/viewer.php?id=942169phpini.png

I think the file is the correct one. When I add or remove some extensions it works, I change this file: for example, I tried to enable extension=php_pdo_sqlite.dll and it did show on the php.info in the browser. But the pdo_mysql still doesn't show..

I am already working in a virtual machine (Windows 2012 Server). The environment where I work is set. I really have to only use these tools (and it is also annoying for me).

Thank you once again for your help.

John_B’s picture

First, I assume you restarted mysql and Apache? And checked permissions on the driver? And checked it is the right version.

Once beyond those basic checks, I am out of my depth here, but you are running a very old version of PHP, with pdo-oci support compiled in and pdo-mysql support not compiled in. This seems likely to mess up the directory where PHP looks for the pdo extensions. Note

--with-pdo-oci[=DIR] PDO: Oracle OCI support. DIR defaults to $ORACLE_HOME.

(source: first comment on http://php.net/manual/en/pdo.installation.php, and try to understand the comment, which I must admit I struggle to follow).

The right answer, if you must keep using this version of PHP, which was end of life on 6 Jan 2011, is to recompile PHP with mysql pdo support compiled in, rather than trying to run the pdo mysql driver as a shared library, as you are. The above point from the documentation may point you to a bandaid solution which could work without recompiling PHP.

RobOnema’s picture

Yes, I did restart MySQL and Apache each time I tried to change something.
But the whole Apache, MySQL, PHP that I am using was already installed, and what I have to do is to build a new website on these.
So I don't really know if the permissions on the driver is okay or not.

The original website that was (and is still) in this virtual machine has the same problem: I can't access to the page "localhost/admin" or "localhost/admin/reports/status" but I can go to the modules pages and most of the administrator pages. So I can continue to work like this. However this problem is still quite annoying.

I am sorry, but I don't understand how to recompile PHP with pdo support. Should I comment 'pdo mysql driver' and de-comment 'mysql pdo support' in the php.ini ? Then how do I actually do the 'recompilation' ?

--with-pdo-oci[=DIR] PDO: Oracle OCI support. DIR defaults to $ORACLE_HOME.

Should I type in the cmd window "php" + that option ? I am really lost.

As you have pointed out, I think that the problem comes from the PHP version.

John_B’s picture

what I have to do is to build a new website on these.

If I were in that situation, I would go to the person who had asked me to do the impossible, and say "First, you have asked me to build a Drupal website on software which is obsolete, and where Drupal will not work; and second, I do not have the skills to upgrade the Windows VM environment which you have provided so that it can run Drupal."

Unfortunately I do not have the skills to write a tutorial on how to install an environment which supports Drupal on Windows, because I work with Linux. (Anyway the forum is not the right place for a full tutorial on a general topic like that). Here are instructions on how to compile PHP on Windows http://www.sitepoint.com/compiling-php-from-source-on-windows/.

Recompiling PHP is a relatively complex operation, and the easier option would be to re-install precompiled version of PHP, which is not precompiled for Oracle, which seems to be the problem with the version you currently have. If you simply uninstall PHP from your environment, then install it again (instructions here), then you should get the non-Oracle version AFAIK, though I have not installed PHP on Windows myself, so you might need to treat my advice with caution.

RobOnema’s picture

I think it is weird too to use such an old versions of software.
I guess the solution is to update the software.

I will now close this thread.

Thank you so much for your help.