Archived

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

Problem With CentOS 5.6

So I'm having a little problem getting ICE to work on CentOS 5.6. Hopefully someone can help. I'm trying to set up Mumb1e (Mumble/Murmur's admin control panel)

1) I've installed LAMP, and ice-php through ZeroC's repo.
2) Changed /usr/local/lib/php.ini, changed the line to:
extension_dir = /usr/lib64/php/modules/
3) Then I /etc/php.d/ice.ini to
extension=IcePHP.so
ice.slice = -I/usr/share/Ice-3.3.1/slice /home/admin/murmur/Murmur.ice
4) Changed murmur.ini to use ICE.
5) Start murmur.x86 with mySQL, everything works.
6) Go set up control panel (on website), then I get this:
Fatal error: Call to undefined function Ice_loadProfile() in /home/admin/domains/newember.com/public_html/murmur/inc/resources/php/slice.php on line 38


Could someone please help? Or if anyone can help set it up, I'm willing to pay a little support fee. Thanks.

Comments

  • mes
    mes California
    Hi Kevin,

    Welcome to the forum.

    This is a common problem for Mumble users. The issue is that the Mumble code you are using is written using an older version of Ice for PHP (specifically, Ice 3.3 and earlier). The Ice for PHP APIs changed significantly in the 3.4 release. Unless Mumble has been updated accordingly, you'll have to continue using Ice 3.3. If you're using the latest Mumble release, I think it's safe to assume that it hasn't been updated for Ice 3.4. The simplest solution in that case is to uninstall Ice 3.4 and install Ice 3.3 instead.

    Please note that we don't provide support for Mumble; you'll have to get in touch with the Mumble developers if you have questions that aren't related to Ice.

    Hope that helps,
    Mark
  • Thanks for the response, I really appreciate it.

    Thing is, when i run yum list ice-*, I get the versions 3.3.1
    Which means I am running on ICE 3.3.1

    Thanks regardless, if anyone has more insights into this, please help.


    Kevin
  • mes
    mes California
    Ok, if you're sure you've got Ice 3.3.x installed, then it's also possible that the Ice extension (IcePHP.so) isn't being loaded by PHP. There are several possible reasons for this, the simplest being that PHP isn't yet configured to load the extension, or perhaps PHP isn't finding the Ice shared libraries required by the extension.

    Here's a simple test: In a command shell window, run

    % php -m

    This shows all of the extensions that are configured into PHP. If you don't see an entry for "ice", then this explains why the Ice_loadProfile function isn't being found, as this function will only be available when the Ice extension is loaded.

    Note that the ice-php RPM installs /etc/php.d/ice.ini, which should automatically load the Ice extension into PHP.

    Regards,
    Mark
  • Thanks for the response once again, your help is greatly appreciated.

    I did php -m, and i did not see Ice being listed.

    Should I change php.ini's line
    extension_dir = /usr/lib64/php/modules/
    back to what it was before? which was
    extension_dir = "./"

    I don't understand why it isn't being loaded.

    Thanks,
    Kevin
  • mes
    mes California
    Hi,

    Are you using the default version of PHP for CentOS 5.6 (which is PHP 5.1.6), or a newer version? If you are using a newer version, that would also explain why the Ice extension isn't being loaded. The Ice extension included in the Ice RPMs is built for and intended to be used with the system's default PHP version. If you have installed PHP 5.2 or later, it won't be able to load this Ice extension.

    To solve this, you'll need to build the Ice extension from source so that it is compatible with your PHP version.

    Cheers,
    Mark
  • That's why. I'm using Php 5.2.17

    Thanks,
    Kevin
  • mes
    mes California
    This thread gives instructions for building the Ice extension.

    Mark
  • I will definitely go take a look..

    Thanks so much for your help again, greatly appreciated. I will come back here if I have further questions.



    Kevin
  • I have a very stupid question,
    I'm trying to edit the PHP_HOME part in the src make.rules since i do not have a php folder in /opt

    Just curious though, do you know where my php is installed? I can't seem to find it. It's not in the default /opt/php folder. Is there somewhere else I should look?

    I'm getting errors while doing "make" under php folder.
  • Is it any possible that you can do a remote session with me and help me out? :( I'm willing to pay you a support fee.
  • mes
    mes California
    On the command line, type:

    % which php

    Set PHP_HOME to the parent directory of the response. For example, if the output of the which command is

    /usr/local/bin/php

    then set PHP_HOME like this:

    % export PHP_HOME=/usr/local

    It's not necessary to modify the Make.rules file just to change PHP_HOME; setting the environment variable is sufficient.

    Mark
  • Thanks, now it's saying "Unable to find slice2cpp in *****"
    I've set ICE_HOME to where I put the Ice-3.3.1 folder.
  • mes
    mes California
    It's not necessary to set ICE_HOME, but you do need to follow all of the steps in my other post. You first need to build a few C++ components (libIceUtil, libIce, libSlice, and slice2cpp) in the source distribution before you can build the Ice extension for PHP.

    Mark
  • Thanks,

    I accidentally set the ICE_HOME, is there a way to make it back to default?
  • xdm
    xdm La Coruña, Spain
    Hi
    I accidentally set the ICE_HOME, is there a way to make it back to default?

    If you export ICE_HOME in your environment just unset it.

    In Linux/Unix
    unset ICE_HOME
    

    Or in Windows
    set ICE_HOME=
    

    if you define it in config/Make.rules just comment or remove the line out.
    #ICE_HOME=....