• 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"); 來指定.

  • 相关阅读:
    python os.path.dirname()
    python os.path.basename()方法
    python mmap对象
    python 读取二进制数据到可变缓冲区中
    sklearn常见分类器的效果比较
    用matplotlib获取雅虎股票数据并作图
    使用 lxml 中的 xpath 高效提取文本与标签属性值
    如何用 Python 爬取需要登录的网站
    python 线程及线程池
    使用Python代码处理Excel
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327469.html
Copyright © 2020-2023  润新知