zoukankan      html  css  js  c++  java
  • Debian Linux 安裝 phpjavabridge (使用deb安裝)

    http://blog.longwin.com.tw/2008/09/debian-install-php-java-bridge-deb-2008/

    在 PHP 裡面跑 Java 的程式(*.jar) 或 Java 的 Library, 需要安裝 php-java-bridge.

    安裝步驟
    1. 安裝 Java JDK/JRE
    2. 安裝 PHP / Apache 相關程式
    3. 安裝 php-java-bridge 所需的相依 package
    4. 設定 / 測試
    到 PHP/Java Bridge 下載安裝檔: (下述兩個都需要下載)
    • Linux Debian Packages - php-java-bridge-j2ee_5.2.2-1_all.deb
    • Linux RedHat/Fedora source - php-java-bridge_5.2.2.tar.gz

    要安裝 php-java-bridge-j2ee_5.2.2-1_all.deb 前, 若直接 dpkg -i php-java-bridge-j2ee_5.2.2-1_all.deb 安裝會出現下述: (然後就會出現很難移除 Package 的狀況)

    dpkg:相依關系問題使得 php-java-bridge-j2ee 的設定工作不能繼續:
    php-java-bridge-j2ee 相依於 sun-java6-jre﹔然而:
    套件“sun-java6-jre”沒有安裝。
    php-java-bridge-j2ee 相依於 tomcat5﹔然而:
    套件“tomcat5”沒有安裝。
    php-java-bridge-j2ee 相依於 liblucene-java﹔然而:
    套件“liblucene-java”沒有安裝。
    php-java-bridge-j2ee 相依於 libitext-java﹔然而:
    套件“libitext-java”沒有安裝。
    dpkg:處理 php-java-bridge-j2ee (--install)時出錯:
    相依關系問題 - 仍未被設定
    在處理時有錯誤發生:
    php-java-bridge-j2ee
    下列的套件驗證失敗!   sun-java6-jre sun-java6-bin

    若已經做此事, 可以參照此篇修復: Debian Linux deb 安裝失敗導致 Package 無法移除 解法

    先來安裝 php-java-bridge-j2ee 所需的 Package
    • vim /etc/apt/sources.list

      deb http://www.backports.org/debian etch-backports main non-free # 加此行

    • vim /etc/apt/preferences

      # 避免更新系統時自動安裝了backports中的套件
      # 只有打 "apt-get -t etch-backports install package_name" 才會安裝backports提供的版本
      Package: *
      Pin: release a=etch-backports
      Pin-Priority: 999

    • 增加 GPG Key: GPG error: http://www.backports.org etch-backports Release: 由於沒有公鑰,下列簽名無法進行驗證: NO_PUBKEY EA8E8B2116BA136C

      # gpg --keyserver hkp://subkeys.pgp.net --recv-keys EA8E8B2116BA136C
      # gpg --export | apt-key add -

      wget http://www.backports.org/debian/archive.key
      sudo apt-key add archive.key
      rm -fr archive.key

    安裝基本程式
    • apt-get install apache2 php5 php-pear
    安裝 java bridge 所需要相關 Package
    • apt-get install tomcat5 liblucene-java libitext-java php5-dev re2c sun-java6-jre sun-java6-jdk
    • ln -s /usr/lib/jvm/java-6-sun-1.6.0.07 /usr/local/java
    安裝 php-java-bridge-j2ee Package
    • dpkg -i php-java-bridge-j2ee_5.2.2-1_all.deb
    產生 java.so for php extension 和 需要的 PHP Library
    1. tar zxvf php-java-bridge-5.2.2.tar.gz
    2. cd php-java-bridge-5.2.2
    3. phpize
    4. ./configure --with-java=/usr/local/java --disable-backend
    5. make # 產生 java.so, /home/jon/php-java-bridge-5.2.2/modules
    6. cp -r php-java-bridge-5.2.2/server/META-INF/java/ /usr/share/php/ # PHP 程式連接時, 需要的 JavaBridge.inc 於此.
    設定 PHP java-servlet.ini

    vim /etc/php5/conf.d/java-servlet.ini

    [java]
    ;java.hosts     = 127.0.0.1:8080 ; 原本這行的 8080 改成 8180
    java.hosts     = 127.0.0.1:8180
    java.servlet   = On ;; Off, On or User
    java.java_home = /usr/local/java/bin/
    java.log_level = 2
    ;java.class.path = /usr/lib/php5/20060613+lfs/
    ;java.library.path = /usr/lib/php5/20060613+lfs/:/usr/local/java/bin/
    ;java.java = /usr/local/java/bin/java

    extension = java.so ; 再加上這行, 讓 PHP extension 載入 java.so

    重新啟動
    1. /etc/init.d/tomcat5 restart
    2. /etc/init.d/apache2 restart
    測試
    1. php -m | grep java # 會看到 java
    2. vim phpinfo.php

      <?php
      phpinfo(); // phpinfo 會看到如下的 Java 資訊
      // java
      // java support Enabled
      // java bridge 5.2.2
      // java server 127.0.0.1:8180
      // java status running
      ?>

    3. vim test-java-hello.php

      <?php
      require("java/JavaBridge.inc");
      $str = new java("java.lang.String","hello");
      echo $str; // 會看到 hello
      ?>

    4. vim test-java-bridge.php

      <?php
      require("java/JavaBridge.inc"); // /usr/share/php/java/JavaBridge.inc

      // get instance of Java class java.lang.System in PHP
      $system = new Java('java.lang.System');

      // demonstrate property access
      echo 'Java version=' . $system->getProperty('java.version') . '<br />';
      echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
      echo 'OS=' . $system->getProperty('os.name') . ' ' .
      $system->getProperty('os.version') . ' on ' .
      $system->getProperty('os.arch') . ' <br />';
      // java.util.Date example
      $formatter = new Java('java.text.SimpleDateFormat', "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
      echo $formatter->format(new Java('java.util.Date'));
      // 會看到:
      // Java version=1.4.2
      // Java vendor=Kaffe.org project
      // OS=Linux 2.6.18-4-686 on i386
      // 星期六, 九月 13, 2008 at 8:56:58 上午 GMT+08:00
      ?>

    相關網頁

    註: PHP/Java Bridge 使用的檔案編碼都是 UTF-8, 若有特別的編碼, 要用: java_set_file_encoding("ISO-8859-1"); 來指定.

  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/adodo1/p/4328191.html
Copyright © 2011-2022 走看看