きしだのはてな このページをアンテナに追加 RSSフィード

2012-11-03(土) UbuntuでNetBeans7.3+PHPの環境設定メモ

[][][]UbuntuでNetBeans7.3+PHPの環境設定メモ 16:59 UbuntuでNetBeans7.3+PHPの環境設定メモ - きしだのはてな を含むブックマーク

メモ。

Ubuntu12.04LTS

Ubuntu12.04LTS 32bitのisoをダウンロード

http://www.ubuntu.com/download/desktop


Ubuntu12.10は、VirtualBox4.1.22のGuest Additionsが対応してなくて、画面のリサイズができなかった。*1


「デスクトップ」とかのカタカナフォルダを「Desktop」にする。

$ LANG=C xdg-user-dirs-gtk-update

「もうたずねない」のチェックを入れつつ間違って「Old Filename」のほうを押すと死ぬ・・・(2013/1/5)


VirtualBoxの共有フォルダ用

$ sudo usermod -a -G vboxsf kishida

-a忘れると死ぬ。

(追記 2013/1/4)


Javaまわり

JDK7u8をとってきて解凍


NetBeans7.3Betaをとってきて解凍

etc/netbeans.confにJDKパスを書く

netbeans_jdkhome="/home/kishida/dev/jdk1.7.0_09"

Glassfish3.1.1.2をとってきて解凍

NetBeansに設定しておく


jenkinsをとってきてGlassfishに配備

jenkinsプラグインphp、gitをいれる

あと、antパスの設定。NetBeans/java/antあたりにあるのを使う


Javaの環境構築は楽だ。


apache2

これはapt-getで。

$ sudo apt-get install apache2
$ sudo apt-get install apache2-dev

apxsが必要なので、devも入れる


PHP

5.4が使いたいのでソースからインストール。

configureでlibxml2が必要といわれるので、devをいれる。

$ sudo apt-get install libxml2-dev

5.4.8をとってきた。本気で使うわけではないので、必要最低限。mbstringはなんとなく。

$ ./configure --prefix=/usr/local/php-5.4.8 --with-apxs2=/usr/bin/apxs2 ----enable-mbstring --with-pear
$ make
$ sudo make install
$ sudo cp php.ini-development /usr/local/php-5.4.8/lib/php.ini

apacheの設定。AddTypeじゃないのは、ちゃんと拡張子判定するため、らしい。

/etc/apache2/httpd.conf

<FilesMatch "\.php$">
 SetHandler application/x-httpd-php
</FilesMatch>

接続確認もしておく。


PHPUnit

ここを参考

http://www.phpunit.de/manual/current/en/installation.html

$ ./pear config-set auto_discover 1
$ sudo ./pear install pear.phpunit.de/PHPUnit
$ sudo ./pear install phpunit/PHPUnit_SkeletonGenerator

auto_discoverの設定は、あとでも使う。


XDebug

デバッガのために必要。

autoconfが必要だったから入れてる


http://xdebug.org/download.php

$ sudo apt-get install autoconf
$ cd xdebug-2.2.1
$ /usr/local/php-5.4.8/bin/phpize
$ ./configure --enable-xdebug --with-php-config=/usr/local/php-5.4.8/bin/php-config
$ make
$ sudo make install

php.ini

zend_extension=/usr/local/php-5.4.8/lib/php/extensions/no-debug-zts-20100525/xdebug.so

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

Composer

パッケージ管理ツール

curlでとってくるので、いれてる。

$ sudo apt-get install curl
$ curl -s https://getcomposer.org/installer | /usr/local/php-5.4.8/bin/php

apigen

ドキュメントを生成するツール


まずはpearでいれてみる。

$ sudo ./pear install pear.apigen.org/apigen

netteがないというエラー


しかたないから、直接とってくる。

http://apigen.org/

apigen.phpの先頭を書き換え

#! /usr/local/php-5.4.8/bin/php

PHPプロジェクトをJenkinsで構築するための準備

とりあえずppw

$ pear install phpunit/ppw

imagemagickでpmdがエラーになったから入れておく。でもこれでだいじょうぶかはわからない。

$ sudo apt-get install imagemagick

いろいろ必要なものを入れる。

$ sudo ./pear install PHPDocumentor
$ sudo ./pear install phpunit/phpCPD
$ sudo ./pear install -a phpunit/phploc
$ sudo ./pear install pear.pdepend.org/PHP_Depend (インストール済みかも)
$ sudo ./pear install -a PHP_CodeSniffer
$ sudo ./pear install -a phpunit/PHP_CodeBrowser
$ sudo ./pear install -a pear.phpmd.org/PHP_PMD

NetBeansで生成したbuild.xmlに、php関連実行ファイルのパスを指定する

<property name="phpbin" value="/usr/local/php-5.4.8/bin"/>

あとは、executableにすべてこのパスをつける

<exec executable="${phpbin}/phpunit" failonerrer="true"/>

*1:追記2013/1/5 4.2.4ではできる

2011-09-18(日) live-commerceでPHPUnitのテストを書く

[]live-commerceでPHPUnitのテストを書く 07:27 live-commerceでPHPUnitのテストを書く - きしだのはてな を含むブックマーク

live-commerceはZend Frameworkを使っているので、テストを書くにはZend_Test_PHPUnit_ControllerTestCaseを継承してsetUpでbootstrapにadmin.phpなどを設定することになるのだけど、テストからだとadmin.phpで使われてる相対パスが狂ってしまうことがある。


ということで、admin.phpの__constructで$_applicationFolderを絶対パスにしておく。

    public function __construct ($configSection)
    {
        if(substr($this->_applicationFolder, 0, 1) != '/'){
            $this->_applicationFolder = dirname(__FILE__).'/'.$this->_applicationFolder;
        }
        $applicationFolder = $this->_applicationFolder;

テストは次のようになる。

<?php
require_once 'PHPUnit/Framework.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

class AdminTest extends Zend_Test_PHPUnit_ControllerTestCase {

    protected function setUp() {
        $this->bootstrap = dirname(__FILE__).'/../../public_html/admin.php';
        parent::setUp();
    }

    protected function tearDown() {
        
    }

    /**
     * @test
     */
    public function testAdmin() {
        $c = new Category();
        $cat = $c->getCategoryInfo(259);
        $this->assertEquals("DVD・ミュージック", $cat['title_217']);
    }

?>

追記 9/18 23:29

これだと複数のテスト記述時にadmin.phpが複数回includeされてエラーになる。

2011-05-13(金) XAMPPでPHP開発するときのPHPUnit/XDebug設定メモ

[]XAMPPでPHP開発するときのPHPUnit/XDebug設定メモ 07:55 XAMPPでPHP開発するときのPHPUnit/XDebug設定メモ - きしだのはてな を含むブックマーク

XAMPP1.7.4の場合。


まずはPHPUnit

コマンドプロンプトを管理者として実行。

> cd \xampp\php
> pear upgrade-channels
> pear update PEAR
> pear channel-discover pear.phpunit.de
> pear channel-discover components.ez.no
> pear channel-discover pear.symfony-project.com
> pear install phpunit/PHPUnit

で、XDebugの設定。

php.iniの設定。

php_xdebug.dllを読み込んでる行のコメントをはずす

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

remote_enableをOn

xdebug.remote_enable = On

これで、NetBeansでもデバッグできるはず。

bushimichibushimichi 2011/09/20 04:16 コマンド表記に誤りがあるようですので、報告させて頂きます。
pear upgrade-channels → pear update-channels
pear update PEAR → pear upgrade PEAR

2008-12-30(火)

[][]Java VMでのPHP 10:43 Java VMでのPHP - きしだのはてな を含むブックマーク

PHPJava VMで動かしたいと思ったので、いろいろ調べてみた。

Java VM用のPHPとしては、現状でCaucho QuercusPROJECT ZEROのP8があるようだ。

どちらもPHP5.2をターゲットにしているみたい。


P8

ここで、PROJECT ZEROのP8の方は、WebSpere sMeshの一部みたいで、単独では配布してなさそう。試してない。Tomcatで使えるんだろうか?

けど、IBMがやってるということで、今後が期待できそう。

http://www.projectzero.org/


Quercus

Quercusのほうは、Resin作ってるCauchoがやってる。前はResinじゃないと動かなかったようだけど、今はTomcatでも動く。ただしどこまで動くかは調べてない。

PHPの関数は全部Javaで書き直されてて、mbstringとかgdとかも実装されてる。もちろん、PostgreSQLやMySQLも使える。JDBC接続はPDOでできる。

サイトの記述によると、mod_phpの4倍の速さで動くらしい

ただ、ソースみたけど、コマンドライン版の入り口になるmainメソッドがみあたらないので、コマンドラインからは呼び出せない。最新版のソースがnot foundだったので、もしかしたら今はできるのかも。

http://quercus.caucho.com


JavaPHP

PHPは動的型付けの言語だけど、言語として動的な仕組みはほとんど持ってない。変数の型解決とevalくらいじゃないだろうか。

オブジェクト指向に対応したけど、オブジェクト指向プログラムができるという話で、言語自体がオブジェクト指向言語というわけではない。

オブジェクト指向機能もJavaのマネをして作られている。参考にしたというより、見よう見まねで実装した感じ。

ということで、PHPのクラスをJavaのクラスに変換するとかは、非常に相性がよさそう。関数は動的に解決されるといっても、標準関数は一意に決まるので、静的にコンパイルできる。そいういうわけで、P8もquercusもJavaのクラスに変換して実行されるみたい。

invokeDynamicの恩恵を一番うける言語は、PHPなんじゃなかろうか


NetBeansPHP

NetBeansからTomcat/GlassfishPHPアプリケーションを配備して動かすとかやるときには、P8がIBMのものということで、Cauchoと仲良くしないといけないんじゃないだろうか。

ただ、その場合はライセンスが問題になりそう。


Quercusを動かしてみる

Quercusのバイナリはここでwarファイルをダウンロード。

http://quercus.caucho.com/#Downloads


ダウンロードしたwarファイルを展開すると、とりあえず使えるWebアプリケーションのフォルダ構成になってる。展開は、拡張子をzipに変えてダブルクリックとかが楽。

既存のWebアプリなどでPHPを使えるようにしたい場合は、展開したフォルダのWEB-INF/libにある

javamail-141.jar

quercus.jar

resin-util.jar

をWebアプリのWEB-INF/libにコピーする。すでにactivation.jarやmail.jarを使ってるなら、おそらくjavamail-141.jarは不要。

web.xmlには次のようなサーブレット定義を記述する。

  <servlet>
    <servlet-name>Quercus Servlet</servlet-name>
    <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
    <init-param>
      <param-name>script-encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Quercus Servlet</servlet-name>
    <url-pattern>*.php</url-pattern>
  </servlet-mapping>

で、こんなPHPスクリプトを書いてみる

<html><body>
<?php
for($i = 0; $i < 3; ++$i){
    echo $i . "です<br>";
}

phpinfo();
?>
</body></html>

そうするとこんな感じで表示される

f:id:nowokay:20081230100413p:image


import javax.swing.JFrame;
$f = new JFrame("こんにちは");
$f->visible = true;

などと書くと、このページにアクセスしたときに、ちゃんとSwingのウィンドウが表示される。あたり前なんだけど、PHPでできるというのがバカらしくていい。


データベースもPDOでJDBCが使える。このときはデータソースの設定が必要。

Tomcat6やGlassfishだと、META-INF/context.xmlにこんな記述をしておく。

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/WebApplication1">
  <Resource auth="Container" 
    name="jdbc/shohin" 
    type="javax.sql.DataSource" 
    driverClassName="org.apache.derby.jdbc.ClientDriver" 
    url="jdbc:derby://localhost/sample" 
    username="db"
    password="db" />
</Context>

で、web.xmlにresource-refを追加。これは実際は不要かもしれない。

    <resource-ref>
        <res-ref-name>jdbc/sample</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

そうすると、こういう記述でデータベースのデータが表示できる。

<html><body>
<?php
$pdo = new PDO("java:comp/env/jdbc/shohin");
$sql = "SELECT * FROM SHOHIN";
foreach($pdo->query($sql) as $row){
    echo $row['SHOHIN_NAME']."<br>";
}
?>
</body></html>

けども、日本語は化けてしまった。

f:id:nowokay:20081230105756p:image

まだ解決策は試してない。

ところで、mb_convert_encodingで引数3つ使うと、マシンが飛んでしまうのだけど、これはぼくの環境だけだろうか?Java SE 6 update 11/Windows XPなんだけど。


Java VM上でのPHPフレームワーク

ちゃんと動くという記述は、まだみつからない。

高橋智宏高橋智宏 2009/01/29 16:59 こんちには。Delphi for PHP に搭載されている PurePHP5のフレームワーク VCL for PHP だったら動くかもしれません。試したことないですが... (^^;

nowokaynowokay 2009/01/29 23:38 VCL!なつかしい響き!
フレームワークって言語の機能をいろいろ使ってるので、移植ものには厳しいんですよね。
Borland(Inpriseだったか)も結構マニアックなことしてそうだし。

2007-12-17(月)

[][]NetBeansPHPプラグインプラグインマネージャにあった 22:54 NetBeansのPHPプラグインはプラグインマネージャにあった - きしだのはてな を含むブックマーク

よくみると、プラグインマネージャの使用可能なプラグインのところにベータ版としてPHPプラグインがありますね。

tockritockri 2007/12/18 10:09 いいけどJavaFXって名前からして不吉だよね