ID: 24204
Updated by: [email]sniperphp.net[/email]
Reported By: php_public at macfreek dot nl
-Status: Open
+Status: Wont fix
Bug Type: Java related
Operating System: Mac OS X (10.2.6)
PHP Version: 4.3.2
New Comment:

Java extension in PHP 4 does not work even if you could compile it.
Will not be fixed in PHP 4. PHP 5 might have working Java support.



Previous Comments:
------------------------------------------------------------------------

[2003-08-05 16:49:59] [email]kalowskyphp.net[/email]

I'm going to unassign this to me, as I have yet to find any solutions
in the CLI, and hopefully someone else will.

As I said before, with the configure script everything is able to
compile just fine, as long as you don't build the CLI interface at the
same time. The hackery proposed above may indeed work, but I don't see
a reason for it. The same can be accomplished with a simple
../configure option.


I still ask that any PHP developer familiar with the buildsystem or CLI
look into why some flags are not being used by it while the CGI works
just fine.

------------------------------------------------------------------------

[2003-08-05 15:56:34] thesin at users dot sf dot net

java builds fine on OSX, this is the how to

config:
../configure --with-java=/System/Library/Frameworks/
JavaVM.framework/Versions/1.3.1/Home

I chose 1.3.1 for compat, if you have 1.4.1 it can be
used.

Patch the source like so:
perl -pi -e 's,DL_FETCH_SYMBOL\(dl_handle\,
\"JNI_CreateJavaVM\"\),DL_FETCH_SYMBOL\(dl_handle\ ,
\"_JNI_CreateJavaVM_Impl\"\),g' ext/java/java.c perl
-pi -e 's,DL_FETCH_SYMBOL\(dl_handle\,
\"JNI_GetDefaultJavaVMInitArgs\"\),DL_FETCH_SYMBOL \(dl_
handle\, \"_JNI_GetDefaultJavaVMInitArgs_Impl\"\),g'
ext/java/java.c

and finally the config (php.ini):
java.home = /System/Library/Frameworks/
JavaVM.framework/Versions/1.3.1/Home
java.library = /System/Library/Frameworks/
JavaVM.framework/Versions/1.3.1/Libraries/libjvm.dylib

of course the java.class.path should equal the full
path to php_java.jar

and I haven't figured out the java.library.path yet
from what I've read it should point to the path where
java.so is created and you should make a libphp_java.so
symlink to java.so (Shared version)

this will get you to this error when I use the java
stuff in a php file:

file:
$system = new Java("java.lang.System");
printf("Java version = %s\n", $system-
>getProperty("java.version"));
Error:
Fatal error: java.lang.UnsatisfiedLinkError: no
php_java in java.library.path

from reading it seems that LD_LIBRARY_PATH needs to be
set but that env var doesn't exist on OS X, in it's
place there is DYLD_LIBRARY_PATH and LIBRARY_PATH but
neither fixed it for me, if anyone can figure this out
please email me.

------------------------------------------------------------------------

[2003-06-26 15:16:24] [email]kalowskyphp.net[/email]

Oddly enough this only occurs while building the CLI, I can build the
CGI just fine. It looks like the -framework JavaVM is being lost in
the CLI version of the build.


Is there someone more knowledgable with the build structure, more
specifically the CLI, that can shed a little light on this?


------------------------------------------------------------------------

[2003-06-16 12:43:59] php_public at macfreek dot nl

Oh yes, this is not the proper fix! That's why I called
it an *ugly* workaround. ;-)

By the way, the file in php-4.3.2/sapi/servlet/
servlet.c will most likely have the same problem.

I would have expected Apple to have made a symbolic
link from /usr/include/JavaVM/jni.h to whereever the
file may reside in the most current release. However,
that is not the case, and Java seem to be installed, so
we apparently have to deal with whatever is available.
The correct solution is probably to add the appropriate
-I option to the linker, by altering the configure
file.

------------------------------------------------------------------------

[2003-06-16 07:43:53] [email]kalowskyphp.net[/email]

The short of it is, those files are needed, but I believe you're
misunderstanding how frameworks work. By specifying the full path you
are (potentially) invalidating future release of the JavaVM framework.


The proper answer is to figure out why the jni.h file is not being used
by JavaVM framework. I'll try to reproduce it later today.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
[url]http://bugs.php.net/24204[/url]

--
Edit this bug report at [url]http://bugs.php.net/?id=24204&edit=1[/url]