Archived
This forum has been archived. Please start a new discussion on GitHub.
Ice with PHP
oksanat
in Help Center
Hi all,
I have a question, I have compiled Ice for PHP and received file IcePHP.dy instead of IcePHP.so.
Can anyone please spend explain how to use it and actually connect with php?
Thanks!
I have a question, I have compiled Ice for PHP and received file IcePHP.dy instead of IcePHP.so.
Can anyone please spend explain how to use it and actually connect with php?
Thanks!
0
Comments
-
Hi,
The php/INSTALL file in the Ice source distribution contains instructions for installing the extension. This file does not contain instructions for Mac OS since that is not a supported platform for our PHP extension, but the instructions for Linux might help you to get it working.
Regards,
Mark0 -
thanks a lot for the reply.
now I added my php.ini with line
extension=/opt/Ice-3.4.1/php/IcePHP.dy
and when I use php I am getting warning:
Warning: PHP Startup: Unable to load dynamic library '/opt/Ice-3.4.1/php/IcePHP.dy' - dlopen(/opt/Ice-3.4.1/php/IcePHP.dy, 9): Library not loaded: /opt/Ice-3.4/lib/libIce.34.dylib
Referenced from: /opt/Ice-3.4.1/php/IcePHP.dy
Reason: image not found in Unknown on line 0
I am using php5.3.4-dev
please advice where I am wrong. Thanks!0 -
Hi Bernard!
Super thanks for the reply.
Can you please take a quick look into this error
Call to undefined function Ice_loadProfile()
but when I do
php -m
I can see ice there
hash
ice
iconv
I have added t php.ini as well (file exists)
ice.slice = slice.ice
from phpinfo() I can see
ice
[HTML]Ice support enabled
Ice version 3.4.1
Directive Local Value Master Value
ice.con no value no value
ice.hid 1 1
ice.opt no value no value
ice.pro no value no value[/HTML]0 -
Hi Bernard,
yes of course.
# MacOS X (Intel 32 bit & 64 bit) Archive
Ice-3.4.1-bin-macosx.tar.gz
# Source Distributions
Ice-3.4.1.tar.gz
1. You have to compile Ice for C++ first.
The easiest will be just untar Ice-3.4.1-bin-macosx.tar.gz and set ICE_HOME
[PHP]ICE_PATH=/path/to/Ice/bin[/PHP]
2. Untar Ice-3.4.1.tar.gz
[PHP]cd php/config[/PHP]
3. Edit Makefile.rules.php file (change path to your php installation/use namespaces/ feel free
[PHP]PHP_HOME = /etc/apache2/php[/PHP]
4. Copy Makefile.rules.Darwin from cpp folder to php
[PHP]cp cpp/config/Makefile.rules.Darwin php/config[/PHP]
5. Edit Makefile.rules.Darwin
[PHP]\#LDPLATFORMFLAGS \+= \-rdynamic
LDPLATFORMFLAGS = \-Wl,-bind_at_load
\#ifdef ice_src_dist
\# shlibldflags = $(CXXFLAGS) \-L$(libdir)
\#else
\# shlibldflags = $(CXXFLAGS) \-L$(ice_dir)/$(libsubdir)
\#endif
shlibldflags = $(CXXFLAGS) ${wl}\-flat_namespace ${wl}\-undefined ${wl}suppress \-L$(libdir)[/PHP]
6. Follow the sun (README) file
[PHP]./configure
make
make install[/PHP]
7. And now you should have shared library for the Ice extension in a path specified by prefix variable in you Make.rules.php file.
8. Connect your php with Ice installation. Add to you php.ini file
[PHP]extension=/opt/Ice-3.4.1/php/IcePHP.dy[/PHP]
9. Set DYLD_LIBRARY_PATH variable
[PHP]DYLD_LIBRARY_PATH=/path/to/ice/lib[/PHP]
10. Check loaded modules (php -m) or
[PHP]
phpinfo();[/PHP]
11. Enjoy your IceThere is a difference in initializing connection between Ice 3.3.x and 3.4.x
Ice <= 3.3
[PHP]Ice_loadProfile();
// initialize ice connection
global $ICE;
$base = $ICE->stringToProxy('$proxy');[/PHP]
Ice >= 3.4
For Ice 3.4 and later you’ll have to do a different approach.
[PHP]require_once 'Ice.php';
$ICE = Ice_initialize();
$meta = $ICE->stringToProxy('$proxy');[/PHP]0
