Archived

This forum has been archived. Please start a new discussion on GitHub.

Problems getting ICE extension loaded in PHP - php_ice.dll

I've searched the forums and tried my best to get things going, but I'm stuck.

I'm trying to set up MumPi as a channel viewer to my Murmur server.

I am trying to get ICE 3.5.1 working with XAMPP on Windows 7 64bit--ive tried both 32bit and 32bit VC9 builds.
(VC9 here: XAMPP - Browse /XAMPP Windows/1.8.1 at SourceForge.net

I tried independently installing PHP and Apache, as well as a WAMP build, as well as IIS 7.5 with no success.

I followed the directions from multiple pages but I am ultimately getting stuck trying to get ICE to show up in phpinfo, and MumPI informs me that PHP hasn't loaded ICE after installing it.

I followed, to the best of my abilities, the instructions from these sources:
Ice - Mumble
Using the Windows Binary Distribution - Ice 3.5 - ZeroC

along with advice from a variety of sort-of relevant forum posts.

----

The error I'm getting when running Apache via XAMPP:
PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_ice.dll' - The specified module could not be found.

The error log gives me:
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_ice.dll' - The specified module could not be found.
in Unknown on line 0

I tried following the troubleshooting steps in the zeroc docs with no success.

php_ice.dll is located in C:\xampp\php\ext\

- I copied
bzip2_vc90.dll
ice35_vc90.dll
iceutil35_vc90.dll
slice35_vc90.dll
into the apache directory (/xampp/apache/). I even tried the other versions of these files from the subdirectories of /bin (vc110, vc120, x64)

My PATH is currently:
%PROGRAMFILES(x86)%\ZeroC\Ice-3.5.1\bin;%PATH% (since that worked for the slice2php instructions)

I checked the permissions of php_ice.dll, and made sure that the referenced account had full permissions.

I added the include_paths for the ICE php directory:
include_path = ".;C:\xampp\php\PEAR;C:\program files (x86)\ZeroC\Ice-3.5.1\php"

php_ice.dll is indeed located in the above directory.

What else can I try?

Comments

  • xdm
    xdm La Coruña, Spain
    Hi Elliot,

    Welcome to the forums, what PHP version are you using? The PHP extensions included in Ice-3.5.1 uses PHP 5.4 and was build with VC90. You cannot use Ice for PHP binaries with a different PHP version or a PHP binary that was build with a different compiler.
  • xdm wrote: »
    what PHP version are you using?

    I'm using 5.4.7 -- in a previous attempt I was using the latest, 5.5.11 I think. Should I try an earlier PHP version?

    Compiler - MSVC9 (Visual C++ 2008)
    Architecture - x86
    Thread Safety - Enabled
  • xdm
    xdm La Coruña, Spain
    Hi Elliot,

    I have done some testing with Xamp, and while the PHP version they provide is compatible with Ice for PHP extension, the apache binaries included are not, the included Apache binaries are build with VC100, and that cause the Ice for PHP extension load to fail trying to load the VC90 C++ run-time. With extensions that only use C language that doesn't seems to be a problem but it is with extensions that use C++ like Ice for PHP.

    You can obtain a VC9 build of Apache from Apache Additional downloads
  • ok, so I downloaded the apache VC9 binary from the link you provided, and configured it to run with php vc9. I am now running PHP 5.4.27 with Apache 2.4.9

    apache starts and when I do php -m, ice does show up in the list of modules. However, when I look at the phpinfo.php page, it does not appear. I had this problem during an earlier attempt with WAMP--apache and php would load, and Ice would appear in the list of modules, but it would not appear in phpinfo and MumPI told me it wasn't loaded.

    Thoughts?
  • xdm
    xdm La Coruña, Spain
    In phpinfo check that php is using the correct php.ini configuration file, that is show in "Loaded Configuration File" directive.

    Your Apache configuration should add something like this to configure PHP5 module
    LoadModule php5_module "C:/php/php5apache2_4.dll"
    PHPIniDir "C:/php"
    AddType application/x-httpd-php .php
    

    You should create a C:/php/php.ini file, use one of the php.ini-* files provided with the PHP distribution as base and save it as php.ini. Then add the Ice for PHP configuration to the php.ini.
    extension_dir = "C:/php/ext"
    extension = php_ice.dll
    

    If you have not installed PHP C:/php/ you should update that according to your installation path.
  • PHP is installed in C:/PHP

    in the httpd.conf file I already added:
    LoadModule php5_module "c:/PHP/php5apache2_4.dll"
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"

    I added in the line "AddType application/x-httpd-php .php"
    above "AddHandler application/x-httpd-php .php"
    but it had no effect when stopping and restarting apache.

    I confirmed that php5apache2_4.dll is there as part of the PHP build.

    I had performed the copy and update of the -production php file into php.ini and had included:
    extension_dir = "ext"
    extension=php_ice.dll

    in their respective areas.

    I have updated to extension_dir = "c:/PHP/ext" to assure it's looking in the right place, but it had no effect when restarting apache.

    With this latest combination of builds, I also tried copying the dependency files into various locations, (instructions stated the apache install directory which I assumed was default C:\Apache24) also with no effect. I have not tried copying into system32.

    My PATH is currently: %PROGRAMFILES(x86)%\ZeroC\Ice-3.5.1\bin;c:\PHP;%PATH%
    and I recently added as a shot in the dark, ICE_HOME: C:\Program Files (x86)\ZeroC\Ice-3.5.1
  • xdm
    xdm La Coruña, Spain
    You don't need to build PHP you can use the binaries from PHP.net, (windows.php.net - /downloads/releases/)
    you must download php-5.4.27-Win32-VC9-x86.zip, Building your PHP should also work but using the binaries will be easy to start.

    Copy the dependencies to C:\Apache24 should work. When the module is loaded php info should contain an entry with "Ice version 3.5.1"
  • sorry for the confusion--i am actually using the binary you mentioned.

    I just tried moving the dependencies back into C:\Apache24, grabbing any files with VC90 in them...and now Ice shows up in phpinfo...

    I copied over:
    bzip2_vc90.dll
    bzip2_vc90d.dll
    ice35_vc90.dll
    icessl35_vc90.dll
    iceutil35_vc90.dll
    libeay32_vc90.dll
    slice35_vc90.dll
    ssleay32_vc90.dll

    rather than just:
    bzip2_vc90.dll
    ice35_vc90.dll
    iceutil35_vc90.dll
    slice35_vc90.dll

    ...and now it shows in phpinfo!

    Thanks so much for your help!