You can use something like Thrift, Google Protocol Buffers or Avro to generate an interface and pass messages between the two languages. This is similar to what Facebook does to communicate between their PHP and other code.
Taking Google proto buffers as an example, you'll create a .proto file that defines some structure. You then run the proto compiler on that .proto file and it will generate corresponding PHP and Java classes which can be passed between the two languages over some middleware bridge.
Avro and Thrift both come with ways to create clients and servers that can talk to one another, where as I believe you are on your own with proto buffers.
Here is a tutorial on setting up a Thrift client in PHP: http://chanian.com/2010/05/13/thrift-tutorial-a-php-client/
Of coures the best idea is to go with a PHP implementation that runs ON the JVM and then you will have direct access to all Java libraries. You will be able to call Java objects like they are plain old PHP objects. JVM hosted dynamic languages are also getting very fast, especially w/ JDK 7. Quercus (an implementation of PHP that runs on the JVM) has actually been shown to be faster (4x faster!) than the mainstream PHP interpreter.
Also, if you are running PHP on the JVM then you can spawn threads and queue up background work... and all the other new libraries you'll be able to access... it is a huge win to switch to Quercus.