Archived

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

IcePHP 3.4.2 not working on OpenSUSE 12.1

Hi guys,

I have a new server running for my hosting stuff, and I want to add the ice-php extension to my PHP installation.

I installed ICE from the ICE SUSE repository (It installed Ice 3.4.2).
After installing the ice-php package, I checked and it automatically added the ice.ini file and referenced to the IcePHP.so library extension.

My machine is x64, and I checked /usr/lib64/ and the ice libraries are there.

My apache is the OpenSUSE 12.1 repository version (apache 2.2.21) and the PHP version as well (PHP 5.3.8).

But when I run php -m, the ice module is not listed, and when running phpinfo(), in the "additional .ini files parsed" part, I see that the ice.ini is parsed, but the extension is just isn't loaded.

Can anyone help me to get the Ice PHP extension running? thanks!

Comments

  • mes
    mes California
    Hi Raul,

    The SLES RPMs that we supply were built for SLES 11. At the time we released Ice 3.4.2, the current version of PHP on SLES 11 was PHP 5.2.6. As a result, you will not be able to use our ice-php RPM on OpenSUSE 12 with PHP 5.3.x.

    Unless you can find Ice RPMs that were built specifically for OpenSUSE 12, I recommend building the PHP extension from source. You'll need to download the Ice source archive, install the mcpp-devel RPM, and then build some of the Ice sources:
    % tar xzf Ice-3.4.2.tar.gz
    % cd Ice-3.4.2/cpp/src/IceUtil
    % make
    % cd ../Slice
    % make
    % cd ../slice2cpp
    % make
    % cd ../Ice
    % make
    % cd ../slice2php
    % make
    % cd ../../../php
    % make
    

    Review the php/INSTALL file for more information.

    Regards,
    Mark
  • Hey Mark, thanks for the quick reply,

    Following your steps, when doing the slice make, I got this:
    s1:~/installers/Ice-3.4.2/cpp/src # cd Slice/
    s1:~/installers/Ice-3.4.2/cpp/src/Slice # make
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Scanner.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  ../Slice/Grammar.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Parser.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  CPlusPlusUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  CsUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  JavaUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Preprocessor.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Checksum.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  PythonUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  DotNetNames.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  RubyUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  PHPUtil.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Util.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  FileTracker.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  MD5.cpp
    c++ -c -I.. -I../../include -DSLICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  MD5I.cpp
    rm -f ../../lib/libSlice.so.3.4.2
    c++ -shared -Wl,--enable-new-dtags -Wl,-rpath,/opt/Ice-3.4/lib64 -rdynamic -m64 -Wall -D_REENTRANT -fPIC -g  -L../../lib  -o ../../lib/libSlice.so.3.4.2 -Wl,-h,libSlice.so.34   Scanner.o ../Slice/Grammar.o Parser.o CPlusPlusUtil.o CsUtil.o JavaUtil.o Preprocessor.o Checksum.o PythonUtil.o DotNetNames.o RubyUtil.o PHPUtil.o Util.o FileTracker.o MD5.o MD5I.o -lIceUtil  -lmcpp -lpthread -lrt
    /usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: cannot find -lmcpp
    collect2: ld returned 1 exit status
    make: *** [../../lib/libSlice.so.3.4.2] Error 1
    

    Any thoughts on this?

    Thanks


    EDIT:
    Sorry, on another forum I found that I needed mcpp as well, and I didn't have that package on the server.
  • mes
    mes California
    Hi,

    It looks like you didn't install the mcpp-devel RPM. We provide this RPM for SLES 11, hopefully this will work for you.

    Regards,
    Mark
  • Thanks again Mark,

    Sorry for being such a pain, but now building Ice, I got a ../../include/Ice/Buffer.h:41:17: error: ptrdiff_t does not name a type error, I searched google and apparently there was a bug in 3.4.1 but it's already fixed, so I don't know what to do here, I checked also a libreadline library that was supposed to be there and be the GPLv2 version, but I have the correct one, here's the output:
    s1:~/installers/Ice-3.4.2/cpp/src # cd Ice
    s1:~/installers/Ice-3.4.2/cpp/src/Ice # make
    rm -f ../../include/Ice/BuiltinSequences.h BuiltinSequences.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice --stream ../../../slice/Ice/BuiltinSequences.ice
    mv BuiltinSequences.h ../../include/Ice
    rm -f ../../include/Ice/Communicator.h Communicator.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Communicator.ice
    mv Communicator.h ../../include/Ice
    rm -f ../../include/Ice/Connection.h Connection.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Connection.ice
    mv Connection.h ../../include/Ice
    rm -f ../../include/Ice/Current.h Current.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Current.ice
    mv Current.h ../../include/Ice
    rm -f ../../include/Ice/Endpoint.h Endpoint.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Endpoint.ice
    mv Endpoint.h ../../include/Ice
    rm -f ../../include/Ice/EndpointTypes.h EndpointTypes.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/EndpointTypes.ice
    mv EndpointTypes.h ../../include/Ice
    rm -f ../../include/Ice/FacetMap.h FacetMap.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/FacetMap.ice
    mv FacetMap.h ../../include/Ice
    rm -f ../../include/Ice/Identity.h Identity.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Identity.ice
    mv Identity.h ../../include/Ice
    rm -f ../../include/Ice/ImplicitContext.h ImplicitContext.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ImplicitContext.ice
    mv ImplicitContext.h ../../include/Ice
    rm -f ../../include/Ice/LocalException.h LocalException.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/LocalException.ice
    mv LocalException.h ../../include/Ice
    rm -f ../../include/Ice/Locator.h Locator.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Locator.ice
    mv Locator.h ../../include/Ice
    rm -f ../../include/Ice/Logger.h Logger.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Logger.ice
    mv Logger.h ../../include/Ice
    rm -f ../../include/Ice/ObjectAdapter.h ObjectAdapter.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ObjectAdapter.ice
    mv ObjectAdapter.h ../../include/Ice
    rm -f ../../include/Ice/ObjectFactory.h ObjectFactory.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ObjectFactory.ice
    mv ObjectFactory.h ../../include/Ice
    rm -f ../../include/Ice/Plugin.h Plugin.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Plugin.ice
    mv Plugin.h ../../include/Ice
    rm -f ../../include/Ice/Process.h Process.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Process.ice
    mv Process.h ../../include/Ice
    rm -f ../../include/Ice/Properties.h Properties.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Properties.ice
    mv Properties.h ../../include/Ice
    rm -f ../../include/Ice/Router.h Router.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Router.ice
    mv Router.h ../../include/Ice
    rm -f ../../include/Ice/ServantLocator.h ServantLocator.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ServantLocator.ice
    mv ServantLocator.h ../../include/Ice
    rm -f ../../include/Ice/SliceChecksumDict.h SliceChecksumDict.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/SliceChecksumDict.ice
    mv SliceChecksumDict.h ../../include/Ice
    rm -f ../../include/Ice/Stats.h Stats.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/Stats.ice
    mv Stats.h ../../include/Ice
    rm -f ../../include/Ice/PropertiesF.h PropertiesF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/PropertiesF.ice
    mv PropertiesF.h ../../include/Ice
    rm -f PropertiesF.cpp
    rm -f ../../include/Ice/EndpointF.h EndpointF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/EndpointF.ice
    mv EndpointF.h ../../include/Ice
    rm -f EndpointF.cpp
    rm -f ../../include/Ice/ObjectAdapterF.h ObjectAdapterF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ObjectAdapterF.ice
    mv ObjectAdapterF.h ../../include/Ice
    rm -f ObjectAdapterF.cpp
    rm -f ../../include/Ice/CommunicatorF.h CommunicatorF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/CommunicatorF.ice
    mv CommunicatorF.h ../../include/Ice
    rm -f CommunicatorF.cpp
    rm -f ../../include/Ice/ConnectionF.h ConnectionF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ConnectionF.ice
    mv ConnectionF.h ../../include/Ice
    rm -f ConnectionF.cpp
    rm -f ../../include/Ice/ObjectFactoryF.h ObjectFactoryF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/ObjectFactoryF.ice
    mv ObjectFactoryF.h ../../include/Ice
    rm -f ObjectFactoryF.cpp
    rm -f ../../include/Ice/LoggerF.h LoggerF.cpp
    ../../bin/slice2cpp --ice --include-dir Ice --dll-export ICE_API -I../../../slice ../../../slice/Ice/LoggerF.ice
    mv LoggerF.h ../../include/Ice
    rm -f LoggerF.cpp
    c++ -c -I.. -I../../include -DICE_API_EXPORTS  -m64 -Wall -D_REENTRANT -fPIC -g  Acceptor.cpp
    In file included from ../../include/Ice/BasicStream.h:17:0,
                     from ../../include/Ice/OutgoingAsync.h:23,
                     from ../../include/Ice/Proxy.h:25,
                     from ../../include/Ice/PropertiesF.h:29,
                     from ../Ice/Network.h:18,
                     from ../Ice/Acceptor.h:16,
                     from Acceptor.cpp:10:
    ../../include/Ice/Buffer.h:41:17: error: âptrdiff_tâ does not name a type
    make: *** [Acceptor.o] Error 1
    

    Thank you very much


    EDIT: I added <stddef.h> standard file to the Buffer.h headers which defines the ptrdiff_t type, and then it compiled, I think this needs to be fixed, Does anyone know where to file a bug to maybe have this looked at more deeply?
  • Here's the bug fix link where I found that using stddef.h would help fix the problem, in the link they used cstddef.h but I used stddef.h which is recommended as more standard and works on C++.

    They had to do the fix for 3.4.1, but I had to do this for 3.4.2 that happened the same to me but only for Ice/Buffer.h

    I only added the following in the file ICE_ROOT/cpp/include/Ice/Buffer.h in line 14 after #include <Ice/Config.h>

    #include <stddef.h>

    and that's it.

    Debian Forums Ice fix

    Hope that information is of any help for solving this.

    Thanks!