|
|
|
@ -59,6 +59,10 @@ Build and execution instructions: |
|
|
|
to utilize the existing JVM and threads from the servlet engine, and |
|
|
|
provides direct access to the servlet request and response objects. |
|
|
|
|
|
|
|
Finally, the bottom of this readme contains some guidance for how to |
|
|
|
approach situations in which these instructions don't work on your |
|
|
|
machine. |
|
|
|
|
|
|
|
======================================================================== |
|
|
|
=== JVM=Kaffe 1.0.4 (as delivered with OS), OS=Redhat Linux 6.1 === |
|
|
|
======================================================================== |
|
|
|
@ -160,3 +164,56 @@ php.ini: |
|
|
|
[java] |
|
|
|
java.class.path=F:\PHP4\Debug_TS\php_java.jar |
|
|
|
extension=php_java.dll |
|
|
|
|
|
|
|
========================================================================= |
|
|
|
|
|
|
|
Guidance for when these instructions don't work. |
|
|
|
|
|
|
|
JDK vendors don't typically document their internal workings, and are |
|
|
|
typically very reliant on code inside of the JAVA main program and the |
|
|
|
installation directory structure. For this reason, running PHP as a |
|
|
|
servlet is typically much easier to get working. But if for some reason |
|
|
|
this is not appropriate for you, and the instructions above don't work, |
|
|
|
then read on. |
|
|
|
|
|
|
|
The first thing to realize is that the directory structure of the JDK is |
|
|
|
very important. Some users (particularly on Windows) get a message about |
|
|
|
a DLL or shared library not being available and proceed to find that file |
|
|
|
and copy it into a system directory. This typically just gets you to the |
|
|
|
next problem - for example, it appears that many JDKs attempt to locate |
|
|
|
the runtime Java classes (rt.jar) in a directory relative to these system |
|
|
|
libraries. So unless you are inclined to copy your entire Java |
|
|
|
installation, you are much better ajusting your PATHs. |
|
|
|
|
|
|
|
Not documented above, but useful for many JDK's is ability to specify the |
|
|
|
library path via java.library.path in the php.ini. On many Unix machines, |
|
|
|
determining the initial value for this can be done by changing directory |
|
|
|
to where you find a shared library that can't be loaded (example: |
|
|
|
libjava.so), and executing "ld libjava.so". If you see some modules |
|
|
|
listed as "not found", add the necessary directories to LD_LIBRARY_PATH |
|
|
|
and repeat until successful. On my system, I require the following |
|
|
|
two directories. |
|
|
|
|
|
|
|
/home/jdk1.2.2/jre/lib/i386/native_threads |
|
|
|
/home/jdk1.2.2/jre/lib/i386/classic |
|
|
|
|
|
|
|
Note: this only determines the statically loaded libraries. Additional |
|
|
|
libraries (such as libzip.so) may be loaded dynamically. On my system, |
|
|
|
libzip.so is located in |
|
|
|
|
|
|
|
/home/jdk1.2.2/jre/lib/i386 |
|
|
|
|
|
|
|
Another php.ini variable which may be helpful is java.home. |
|
|
|
|
|
|
|
If java.library.path doesn't work for you (it won't on any JDK 1.1 |
|
|
|
implementations, for example), then try setting the system PATH or the |
|
|
|
LD_LIBRARY_PATH before starting your web server. For Apache on Linux |
|
|
|
systems, this can be accomplished by editing the Root's .bashrc and |
|
|
|
adding the necessary export LD_LIBRARY_PATH statement. |
|
|
|
|
|
|
|
If that doesn't work, try dividing an (hopefully) conquering by temporarily |
|
|
|
eliminating items such as Apache from the process by adjusting the |
|
|
|
arguments passed to the ./configure command (i.e., removing --with-apxs). |
|
|
|
|
|
|
|
If all else fails, "man dlopen" on Unix systems will give more insight on |
|
|
|
what the system is trying to do internally. |