2013-03-04 2 views
3

Я пытаюсь использовать PHP на Tomcat (не спрашивайте, почему, мне просто нужно), и следуйте за Configure PHP with Tomcat и несколькими учебными пособиями для PHP с PECL & Tomcat.Настройка PHP на Tomcat дает исключение: UnsatisfiedLinkError

Я сделал большую часть вещей, необходимых учебников, как установить все переменные окружения, которые необходимы, но я по-прежнему работать в такие ошибки, как показано ниже, при запуске:

javax.servlet.ServletException: Servlet.init() for servlet php threw exception 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
    java.lang.Thread.run(Thread.java:619) 

root cause 

java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\php5servlet.dll: The specified procedure could not be found 
    java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803) 
    java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728) 
    java.lang.Runtime.loadLibrary0(Runtime.java:823) 
    java.lang.System.loadLibrary(System.java:1028) 
    net.php.reflect.loadLibrary(reflect.java:34) 
    net.php.reflect.<clinit>(reflect.java:29) 
    net.php.servlet.init(servlet.java:157) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
    java.lang.Thread.run(Thread.java:619) 

Кроме того, всякий раз, когда я обновляю страницу. Он дает это исключение:

javax.servlet.ServletException: Servlet execution threw an exception 

root cause 

java.lang.UnsatisfiedLinkError: 
net.php.servlet.send(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Z)V 
net.php.servlet.send(Native Method) 
net.php.servlet.service(servlet.java:190) 
net.php.servlet.service(servlet.java:214) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

Я пытался решить это, безуспешно, со вчерашнего дня. Может ли кто-нибудь сказать мне, что я делаю неправильно здесь? Или какое решение может быть? Благодарю.

ответ

1

Какую версию PHP вы используете?

Не все версии PHP поддерживают php5servlet. Библиотеке php5servlet.dll нужна функция или метод, содержащийся в библиотеке php5ts.dll, но эта библиотека php5ts.dll изменяется в соответствии с версией PHP (добавлением новых или вычитанием старых методов) по этой причине, когда php5servlet.dll вызывает какой-либо метод, возможно, не может его найти.

Вам нужна одна версия PHP (может быть, старше, чем вы используете) в соответствии с используемой вами библиотекой PECL.

Последнее тестирование версии PHP для меня http://windows.php.net/downloads/releases/archives/php-5.2.16-Win32-VC6-x86.zip

Я не знаю, почему до сих пор PHP 5.3.0 или новее VC6 не работает.

Последняя версия PECL с требуемой библиотеки (php5servlet.dll, php_java.dll, php_java.jar и phpsrvlt.jar) был http://museum.php.net/php5/pecl-5.2.5-Win32.zip

Tomcat использовали для этого тестирования был http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27-windows-x86.zip

Если вы хотите работать только с файлами .php ...

Теперь (Это ниже часть не является причиной для ошибки, поэтому не исправить.), вам может работать положить ваши .php файлы непосредственно в

TOMCATDIR\webapps\ROOT\ 

ввод сгенерированного .jar файлу php5srvlt.jar внутри \ Lib очевидно, изменяя web.xml файл что-то вроде :

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0" 
    metadata-complete="true"> 
    <servlet> 
    <servlet-name>php</servlet-name> 
    <servlet-class>net.php.servlet</servlet-class> 
    </servlet> 
    <servlet> 
    <servlet-name>php-formatter</servlet-name> 
    <servlet-class>net.php.formatter</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>php</servlet-name> 
    <url-pattern>*.php</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>php-formatter</servlet-name> 
    <url-pattern>*.phps</url-pattern> 
    </servlet-mapping> 
</web-app> 
Смежные вопросы