2013年02月13日

Win7+Apache2.2.22+PHP5.2.17

恒例行事になってますがPHP環境をセットアップしてます。今回は

Win7Pro 32bit
Apache 2.2.22
PHP 5.2.17

の組み合わせです。
過去に

Win2008Std 32bit
Apache 2.2.22
PHP 5.2.17

で実績がある組み合わせなので、はまることなく・・・と思ってましたが、
過去のセットアップ同様にやっぱりはまってます。

はまり箇所は2点

1)PHPインストール直後にApacheが起動しない

これは過去にも発生しました。

あちこちのページで対処療法が記載されてるので、詳細は省略しますが、
インストールした拡張モジュールをいったん全てコメントアウトして
Apacheを起動してから、コメントアウトを戻してApacheを再起動すればOK。

・・・ならし運転が必要なんですかね?


2)一見、正常動作し始めたようにみえるけど、とあるページで
 誤動作(※)が発生する

※・・・文字化けする、PHPコードが出力される、PHPのコードが動かない

後者がどの環境でも発生するなら元のコードが怪しいんだけど、
ほかのPCでは発生しないんですよね。。。


全く原因不明で匙を投げたいところなんですが、もうちょい、怪しいところを
絞り込むくらいのことはしようと思ってます。




posted by しげ at 12:40| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年07月15日

Win2003/Apache2.2.15/PHP5.2.13、犯人は?

IISでPHPって話はどこへやら。apacheでOK、ってことだそうで、普通にセットアップ作業を行ってます。


ですが、Apache2.2.15/PHP5.2.13をインストールしたところApacheが起動せず、
エラーを吐くようになりました。

Apacheをインストールした直後ではApacheは普通に起動して問題なく動作しています。
この組み合わせ、Win2008ではちゃんと動いています。

ApacheかPHPのどっちかの問題(・・・もしくはWin2003?)でしょうね。



画面に表示されるエラーメッセージは


The requessted operation has failed!


で、イベントログにはアプリケーションエラーとして


エラー発生アプリケーション httpd.exe、バージョン 2.2.15.0、エラー発生モジュール php5ts.dll、バージョン 5.2.13.13、エラー発生アドレス 0x000nnnn


と出力されてました。
あと、エラーログには


[crit] (OS 6)ハンドルが無効です。  : master_main: create child process failed. Exiting.


と。


・・・原因がさっぱりわからないです。
PHPはインストーラでインストールしていますが、PATH等を確認して見る限りで、
設定に問題はなさそうだし。


で、バージョンの組み合わせを変えてみました。


Apache2.2.15/PHP5.2.13 = ×(最初の組み合わせ)
Apache2.2.15/PHP5.2.12 = ×
Apache2.2.14/PHP5.2.12 = ×
Apache2.2.14/PHP5.2.9 = ○


SOAPのバグが改修されてるPHP5.2.9ではちゃんと動いたんで、これで動かすことにします。


なんで?という疑問は解消されていないんでキモチ悪さが残ってますけどね。

posted by しげ at 17:02| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年07月14日

WindowsServer2003のIIS6でPHP5を動かす

うちのとあるシステムと別会社のとあるシステムを1つのサーバで動かすことになりました(※)。

うちはApache2.2/PHP5(Ethna2.3)/PostgreSQL8、別会社はIIS6,7/.NET2.0/SQLServer2005。

ApacheをIISに置き換えれば1つのサーバじゃ動かないことではないんで
IIS6でPHPを動かしてみることにしました。


セットアップ方法ですが、オフィシャルを含めていくつかサイトをチェックしても
どれが正解なのかよく判ってません。

正しい方法ではないかもしれませんが、うちの環境ではこうやれば動きました。。。
要点のみ記載します。

■PHPインストール
Web Server Setupでは IIS ISAPI module を選択。

■IISの設定
・Web サービス拡張で以下のWebサービス拡張を追加。
拡張名:PHP(←任意)
必要なファイル:php5isapi.dll

・上記のWebサービス拡張を許可。

・サイトのプロパティ、ホームディレクトリタブで構成ボタンを押下して、
 アプリケーションの拡張子マッピングを追加

実行可能ファイル:php5isapi.dll
拡張子:php
動詞:GET,POST

・Windows\system32フォルダへphp5ts.dllをコピー
 (↑これは必要かどうか未確認)

■その他の設定
・PHP、PEARなどのライブラリの実行権限をIISのユーザに付与
・Ethnaで作ったアプリのフォルダの権限を設定
・php.iniはPHPをインストールしたフォルダのphp.iniが使われている。
 変更時には再起動が必要



ラベル:IIS6 php5
posted by しげ at 14:55| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年06月21日

またもやtcpdfにはまる

6月末に向けて最後の追い込みにかかってます。


あと一歩というとこまできてまして、実環境での動作検証を行ってます。
そこで開発してた環境とtcpdfのバージョンが違うことでトラブルが発生しました。
(開発環境は成果物の別の導入先の環境にあわせてました)


これはver4.5での出力ですがver4.8までは同様に出力されます。
v4.5.jpg


で、ver5.4.009になると、こんなふうに出力されてしまいました。
大きく下にずれてますね。
やや右にもズレてます。
v5.3.jpg


他のメンバーに調査をしてもらったところ、Text()を利用しているところでズレが
発生しているとのこと。
Cell()については問題が発生していないようです。



change-logを追っかけてみると、ver4.9.010で

Text() method was extended to include all Cell() parameters.

とあります。
ver4.9.000に発生した

Vertical alignment of font inside cell was fixed

が、ver4.9.010でText()にも反映されて、$calignのデフォルト値が
変わってしまったことが原因のようです。


じゃ、どうすればいいか、ってことですが、$calignの値を変えてみました。
デフォルトは$calign="T"(T : cell top)なので、

$calign="D"(D : font bottom)の場合。
v5.3_fontbottom.jpg

$calign="L"(L : font baseline)の場合。
V5.3_fontbaseline.jpg


ver4.8までのText()の挙動に近いのは、$calign="L"ですね。
右によってるけど。


Text()の$calignの初期値を変えることでなんとかすることにします。



さて、ちなみにtcpdfの現時点の最新バージョンv5.4.003ですが、


  Windows XP + XAMPP1.6.8(apache2.2.9/PHP5.2.6)


の環境では、CPU使用率が100%に貼り付けたままで数十分経過することがあります。


  Windows Server 2008 + apache 2.2.15/PHP5.2.13


の環境では、なんの問題なく出力されるのですが。。。


PHPの何かのバグ、ですかね???
かなりはまりこんだんですが。。。。

ラベル:TCPDF
posted by しげ at 22:17| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年06月05日

EthnaのAppObjectを利用する場合

EthnaでAppObjectを利用する場合、一度アクセスしたテーブルのテーブル定義は
tmpフォルダ(※)に保持されてるみたいです。


なので、テーブルの定義を変更した場合には、AppObjectが生成したテーブル定義のキャッシュを
削除しておかないと、私みたいにしばらく悩むことになります。



※ココ
./tmp/cache/default/cache_ethna_app_object

ラベル:Ethna2.3 php5
posted by しげ at 00:01| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年04月21日

今度は問題なく

今度はちょっと打診があったのでphpのSOAPClientとC#のSOAPServerでの動作検証。
これまでの逆バージョンですね。

C#側はWebServiceのプロジェクトを作成して、メソッドの戻り値たちを1つのクラスとして
作成して、そいつを戻してやります。

    [WebMethod]
    public responseData getGudaguda() {

        responseData piyopiyo = new responseData();

        piyopiyo.param1 = "hoge";
        piyopiyo.param2 = "hogehoge";

        return piyopiyo;
    }

実行すると

http://localhost:1234/hogehogeWebService/Service.asmx

みたいなURLが生成されるので、後ろに?wsdlをつけて

http://localhost:1234/hogehogeWebService/Service.asmx?wsdl

とするとWSDLが取得できます。
ここまではC#でWebServiceつくるのとなんだ違いはないのでわざわざ解説すること
でもないですね。


ちなみにWSDLはこんな感じに出来上がってます。

<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
  <s:element name="getGudaguda">
    <s:complexType />
  </s:element>
  <s:element name="getGudagudaResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="getGudagudaResult" type="tns:responseData" /> 
      </s:sequence>
    </s:complexType>
  </s:element>
  <s:complexType name="responseData">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="param1" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="param2" type="s:string" /> 
    </s:sequence>
  </s:complexType>
</s:schema>
</wsdl:types>
<wsdl:message name="getGudagudaSoapIn">
  <wsdl:part name="parameters" element="tns:getGudaguda" /> 
</wsdl:message>
<wsdl:message name="getGudagudaSoapOut">
  <wsdl:part name="parameters" element="tns:getGudagudaResponse" /> 
</wsdl:message>



一方PHPのSOAP Clientも簡単です。

<?php

// オプション設定
$options = array("encoding" => "UTF-8",);

// SOAPClient生成
$client = new SoapClient("http://localhost:1234/hogehogeWebService/Service.asmx?wsdl", $options);

$res = $client->getGudaguda();

?>

でOK。

$resはstdClassで、$res->getGudagudaResult->param1, $res->getGudagudaResult->param2 で
値を取得できます。実運用ではSOAPリクエストのタイムアウトを考慮する必要があります。

C#からbyte配列のデータを戻り値で受け取るようなものを作ってみたんですが、C#, PHPそれぞれで
base64を使ってencode/decodeしてくれてるみたいで、アプリケーション側ではバイナリデータを
意識することなく受け渡しできるようですね。

ラクチンです。
PHPをSOAP Serverにしたときはあんなに苦労したのに。。。。

ラベル:soap PHP C#.NET Web Service
posted by しげ at 16:01| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年04月15日

SOAPにはまった

PHPのSOAPServerとC#.net2005のClientの連携、最終話です(歓喜の涙。


PHPのSOAPServer側で、WSDLで定義した通りに戻り値を設定できず、
かなり苦戦しましたが、実稼動時間で約24時間かけてようやく解決しました。


原因はPHP5.2.5のSOAPのバグでした。
(PHP5.2.9では解決していました)


時間返してくれぇ!!!



具体的にどんな問題があったかというと。

WSDLモードでSOAPServerを実行し、メソッドの戻り値として
WSDLで配列を含むような入れ子になる型定義(TYPE)をしている場合に、
PHPが入れ子構造を認識できない(入れ子の途中が飛ぶ?)という事象です。

少々端折ってますがWSDLはこんなかんじ。
PHPにはWSDLの生成機能がないのでC#でWebServiceを作ってそれを元に作成しました。
(SOAP-ExtensionじゃなくてNuSOAPとかだと生成できるのかな?)


<xsd:element name="もどりのデータ">
  <xsd:complexType>
    <xsd:sequence>
      <s:element minOccurs="1" maxOccurs="1" name="でーた" type="xsd:string" />
      <s:element minOccurs="1" maxOccurs="1" name="でんわでーた" type="ns:でんわりすとがた" />
    </xsd:sequence>
  </xsd:complexType>


</xsd:element>
・・・
<xsd:complexType name="でんわリストがた">

 <xsd:sequence>
  
<xsd:element name="でんわ" type="ns:でんわがた" minOccurs="1" maxOccurs="unbounded" />
 </xsd:sequence>


</xsd:complexType>
・・・
<xsd:complexType name="でんわがた">
 <xsd:sequence>
 <xsd:element name="じたく" type="xsd:string" />
 <xsd:element name="けいたい" type="xsd:string" />
 <xsd:element name="そのた" type="xsd:string" />
 </xsd:sequence>
</xsd:complexType>



こんなかんじで「でんわでーた」データは「でんわ」配列のデータで、配列の要素の中身は
「でんわがた」で定義されてるハッシュ(連想配列)のデータ、という戻り値です。

でーた
でんわ[0].じたく
でんわ[0].けいたい
でんわ[0].そのた
でんわ[1].じたく
でんわ[1].けいたい
でんわ[1].そのた
・・・


という形が出来上がり形ですね。


定義通りにメソッド戻り値として

$はいれつ[] = array("じたく"=>"・・・", "けいたい"=>"・・・", "そのた"=>"・・・");
return ("でーた" => "・・・", "でんわでーた" => array ("でんわ"=>$はいれつ),);

としてやったんですが、PHPからは

SOAP-ERROR: Encoding: object hasn't 'じたく' property in ・・・
(意訳:"じたく"がセットされてねぇから動いてやらねぇよっ)


と怒られました。
PHPは「でんわでーた」の存在を無視してたみたいで、

でーた
じたく
けいたい
そのた

だと言い張ってくれてます。

で、これが発生してたのがPHP5.2.5の環境。
PHP5.2.9の環境で動かすとちゃんと動いてくれました。


あまりに不可解なのでWSDLの定義をチェックしたり、サンプルのWSDLをかき集めたり、
PHPのソースを見て解析しようとしてあっさり断念したり、PHP-PHP間でテストしてみたり、
かーなり苦労しました。

バージョンの差分をとって不具合の箇所を特定してその箇所を修正してPHPをビルドしなおして
みるとPHP5.2.5でも正常に動いたのでもう大丈夫・・・と思います。


ほんととっても疲れました。
何だかとても眠いんだ。
パトラッシュ。。。

そうそう、タイトルが過去形だけど、ちょっと怪しいところがあるんです。
もうやだよ、パトラッシュ。。。



ラベル:C#.net2005 soap PHP
posted by しげ at 14:32| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2010年04月07日

SOAPにはまる2

前のエントリの続き。

本筋の作業の合間の息抜きに通信テストしてるのですが(仕事の息抜きに仕事って(涙))、
またもやはまってしまった点をメモ。



PHPのメソッドでは、連想配列をメソッドの戻り値として指定してるんですが。

 WSDLの戻り値の名前 = 連想配列のキー

でなくてもExceptionは発生しないようです。
戻り値の値がNULLになるだけ。間違えてる私が悪いんですが。。。
(WSDLの作りによってそうならないこともあり得ると思いますが)


もう一つ。


メソッドを定義したPHPで例えばPHPのソース部分の最後?>のあとに空白や改行があると、
Client側のC#.NETで「XMLが正しくねぇよ」って怒られます。
処理自体やWSDLに問題がなく、パッと見で気づかないので要注意。


当然ながら、開発中はphp.iniでSOAPのキャッシュをオフにしておきましょう。

 soap.wsdl_cache_enabled = 0



ラベル:soap PHP C#.NET 2005 xml
posted by しげ at 19:20| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

SOAPではまる

XAMPP環境のPHPをServer、C#.net2005をClientとしてSOAP通信のテスト中。

手で作成したWSDLを使って動かしてみたんですが、Serverの処理結果の受け取り時に、C#側で


クライアントは 'text/html' の応答のコンテンツ タイプを見つけましたが、'text/xml' が必要です。
要求は以下のエラーにより失敗しました。
--
<?xml version="1.0" encoding="UTF-8"?>
以下略


というInvalidOperationExceptionが発生しちゃいました。

エラー内容を見てみると、以下略の部分にSOAPのリクエストの結果がちゃんと入ってるのでサーバ側
処理は完結しているようです。


メッセージをそのまま解釈すれば、

・SOAP ServerのPHPがちゃんとtext/xmlで送るべき
・SOAP ClientのC#.net2005がtext/htmlとして受け取れ
・SOAP ClientのC#.net2005がtext/xmlとして読み取れ

のどれかを対応すれば解決できると思いました。

で、サーバ側の設定、クライアント側の設定、WSDLに問題が無いか(default値でまずい部分がないか)を
調べてみたのですが、原因不明。

結構時間をかけて情報収集したのですが、結論はでず。

投げれるものならサジを投げたくなってきました。


ふと思うところがあって、試しにCentOSで動かしているサーバにSOAPサーバ側を動かしてテストしてみたら・・・


うまく行きました。
なんでやねん



XAMPPでなく、Apache/PHPを個別にいれたWindow2003環境でテストしてみたら・・・


うまく行きました。



XAMPPのApacheか、PHPかのどちらかの設定に依存する問題と分かりました。
原因を調べる余裕が無いので、原因不明のまま動作確認を急ぎます。


あぁ、つかれた。

posted by しげ at 15:13| Comment(0) | TrackBack(1) | PHP | このブログの読者になる | 更新情報をチェックする

2009年12月03日

PHPでSOAP

PHP5でSOAP(Server / Client両方とも)を使って開発してます。

先人の残したソースがあるのでそれをそのまま流用してちょこちょこっと
かいかえたらおk、と思ってたんですが、ところがどっこい大ハマリ。

fail to open stream とかなんとかエラーが返ってきて、そんなSOAPServerねぇよ
って怒られたりして、修正しても状態は変わらず、別のWebServiceを呼んだら
呼べるから自分のソースに問題があることは間違いなさそうだったんだけど。


試行錯誤して、結局たどり着いた答えは

 PHPでwsdlをキャッシュしてやがった

でした。

php.iniの[SOAP]の中で

 soap.wsdl_cache_enabled=1

という部分があるんだけど、これが1だと

 soap.wsdl_cache_ttl=86400
 (86400秒=24h)

キャッシュされるんですね。


・・・思いっきり凹みました。
地面にめり込むくらい。


教訓 : 開発中は「soap.wsdl_cache_enabled=0」としておきましょう。
ラベル:PHP soap
posted by しげ at 22:57| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年10月29日

Xserverの動き、のその後

エックスサーバに問い合わせてみたんですが、フレームワークの設置はどこでも
かまわない。キャッシュのせいじゃないっすか?という回答でした。

これまでサーバ側のキャッシュはあまり意識していなかったんですが、PHPの
コード自体をどこかでキャッシュしてるんですかねぇ。


どうにもならないので、(appid)_controller.phpでEthnaを呼び出している部分の
パスを修正して、別の場所に設置したEthnaを呼び出させることで対応して、
解決しました。
原因が判らないところがなんともキモチ悪いのですが、先を急ぐので。。。
ラベル:XServer PHP Ethna
posted by しげ at 12:22| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年10月28日

Xserverの動き

XServerでEthna2.3のアプリを動かしてテストしてるのですが、ちょっと困ったことに
なってます。
なにかというと


Ethnaのライブラリから出力されるエラーメッセージが文字化けしちゃう


ということです。
当初、「あーUTF-8にするの、忘れてたー!」と思い、Ethnaのライブラリを入れ替え
直したのですが、その後も状況が変わりません。
それどころか、Ethnaのフォルダ名を変更しても、まったく問題なくアプリが動き
続けるんです。。。


頭の整理も兼ねて、整理してみます。

*******
やったこと
*******

1)php.iniの設置

サーバ全体に対して設定したければftpのルートに、1つのディレクトリのみに設定したければ
そのディレクトリにphp.iniを設置する、ということなので、ftpのルートにphp.iniを設置
しました。


2)ライブラリの設置

public_htmlは公開フォルダ、公開したくないものはその上のディレクトリに、ということなので、
当初、/(サーバ名) 以下にEthna / Smarty を設置しました。
1)のphp.ini の include_pathにEthna / Smartyのパスを設定したところ、Ethnaで
構築したアプリが実行されました。

あとから /(サーバ名)/public_html 以下にEthna / Smarty を移動してみました。


********
現在の事象
********


・php.ini を削除するとアプリは実行できなくなります。
・include_pathからEthna, Smartyを削除しただけであればアプリは実行できます。
・Ethna / Smartyのフォルダを削除してもアプリは実行できます。
・EthnaのファイルをUTF-8変換したファイルに入れ替えてもメッセージはEUC-JPです。



**********

考えられること

**********




・サーバがいったん読み込んだライブラリはキャッシュされてそのまま使われている。




・・・どーしたらいいんでしょうねぇ。。。
一度、エックスサーバに問い合わせてみます。。
posted by しげ at 22:37| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年10月09日

Paypalで大苦戦

決済サービスとしてPaypalを利用したサイトを開発中。

以前はあったはずの日本語情報がなくなってたりして大苦戦してます。

なんとか情報をかき集めてるので自分のためにメモ。


決済方法の説明、コード、Sandboxの利用方法
http://blog.katsuma.tv/develop/paypal/

サンドボックス登録手順(画面つき)
http://skeleton.juxtaposition.jp/blog/2009/10/09-155942.html


かつての日本語サイト(googleキャッシュ
そこから掘り起こしたドキュメント
Sandboxユーザーガイド(PDF)
ウェブペイメントスタンダードインテグレーションガイド(PDF)


Paypalのサービス自体は簡単なんだけど、思い通りのことをするには
ちょっと面倒な手順が必要。
思い通りを自分の思い通りじゃなくてPaypalの思い通りにすればいいんだろうけど。。。

ラベル:PayPal 決済
posted by しげ at 21:06| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年09月18日

メールで文字化け(マヌケな話)

PHPでメール送信する機能のテストをしていたところ、メール本文の特定の文字で
文字化けすることが発生しました。


特定の文字、というのが「目」「本」という字です。
「本文」という字が「吠犬」と変換されたりします。

あらためて吠えるって、右半分が犬なんだーって知りました。
どうでもいいことですが。



メールの送信はPEARのNet/Smtpを利用してて、システム内の文字コードはUTF-8。
フレームワークとしてEthnaを利用してます。
入力されたメール本文をISO-2022-JPに変換してメールソースを生成し、
これをテーブルに格納。定期的にバッチでテーブルのデータを取得してメールを送信、
というつくりになってます。


まずは問題点の整理のため、var_dumpなどでデータを取りながらチェックしてみました。
ISO-2022-JPに変換するまでには問題なく、また、テーブルに格納されたメールソースを
取り出してコード変換してみましたが問題ないようにみえます。
なので、問題はメール送信部分にありそうです。


同様の構成で、同じ環境で構築したシステムでは発生していない(※)ので、まずは
今回構築したシステムの基盤部分(ライブラリとして定義してる部分)になにか問題が
あるのでは?と調査してみました。


一応、手始めに初期設定の状態で利用しているphp.iniのチェック。

※のとおり、他では発生してないんで、php.iniが原因ではないとは思いますが、
一応チェック。


PHPの文字化けを本気で解決する


のエントリをみながら確認してみましたが問題が発生しそうな定義はなさそうです。
これまた一応、推奨される設定をしてみましたが事象はかわらず・・・。


次にいろいろ検索してみると、


CodeIgniterでISO-2022-JPでメールを送信すると特定の日本語で文字化け


に良く似た事象がありましたので、stripslashesを利用している部分をチェック
してみましたが、基本的に該当なし。
Ethnaのフィルタとしてpost/getしたデータをクリーンにするためにstripslashesを
利用してますが、ISO-2022-JPに変換する前では文字化けが発生していませんので、
該当なしといっていいでしょう。
コード変換とテーブルへのInsert、テーブルから取得とメール送信は1つのメソッドで
おこなってますからそもそもフィルタを経由することはないはずだし。


magic_quotes_gpc が on になってたので、一応Offにしてみましたが
事象は変わらず。そりゃそうですよね。サーバのバッチ処理でデータ取り出してるので
get / post / cookie は関係ないはずですよね。うん。



手詰まりになって、おやつを食べつつ気分転換をしてたそのとき、SQLを発行して
テーブルからメールソースを取り出して戻り値として設定している部分で

pg_unescape_bytea

というメソッドを使ってることに気づきました。


なんだよこれorz


なんだよっていうか、100%これが原因です。unescapeなんかしてるので
必要な制御コードがとりはずされちゃったんですね。

他のシステムからそのままコード持ってきてたんですが、不要なコードが残ってたんですね。


どどどどどっと疲れがでて、やる気もなくなったのはいうまでもありません。。。
ラベル:PHP
posted by しげ at 17:59| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年07月16日

誰がリクエストしたか?

Ethnaでサイトを構築中なのですが、画面にある複数のボタンのうち、
どのボタンが押されたか判定する方法でちょっと悩んでます。

別画面に遷移するボタンもあるんだけど、検索ボタンとか再描画ボタンとか
同じ画面を再表示するボタンが複数あるので。

考え付いた方法は2通り。

・ボタンが押されたときに動かすアクションを別のものにして、viewかtemplateは
 共通化してしまう
・ボタンが押されたときにonclickイベントなどでformの中のhidden項目の値を
 書き換えて、その値でpostの元となるボタンを判断する

処理を共通化したいものもあるので、後者を採用する予定ですが、他に
いい方法があるのかなぁ・・・。
うーむ。
ラベル:Ethna PHP
posted by しげ at 16:00| Comment(2) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年06月19日

ただいまコーディング中

ただいまPHPでコーディング中。

Eclipse3.4+PDT2を使ってます。

やっぱりIDEがあると便利ですねぇ。
テキストエディタでやってたらくだらない文法エラーでストレスが
溜まって先に進まなくなってたでしょうね。

裏を返せば、くだらない文法エラーをしてしまうくらい、IDEの助けがないと
コーディングできないくらい、PHPに習熟できていないということですが。。。


楽しみながらコーディングできているのはいいことではあるんですが、
しかし、


 orz 別件のドキュメント作成が全く進んでいない・・・


脳みその中にある要件やシステム構成を、整理してまとめて、
大量のドキュメントにするって仕事があって、優先順位をつけるなら
こちらが最優先なんだけど全く手付かずです。


いやー、マズイ。マズイです。。。


でも・・・・。


PHPもなかなか面白いし。。。
ラベル:PHP Eclipse PDT2
posted by しげ at 21:32| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年06月18日

EthnaでMySQLでUTF8

Ethnaのバージョン2.xはまだEUCでコーディングされてます。
次バージョンはUTF8が標準になるようですが、正式版は今現在リリースされてないです。

これが理由かどうかまで調べ切れていませんが、MySQLのDBにある日本語データを
取り出して表示するアプリを作成したときに日本語が文字化けする場合があります。

MySQLへSQLを投げる前に文字コードを設定すればいいのですが、
いちいちそんなことを定義していられないので、その解決策がこちら


Ethnaを初めて触った頃は、この株式会社インデペンデンスシステム横浜さんのサイト
みて勉強してましたが、いつのまにか携帯サイト構築のページが追加されていますね。

時間があるときに読んでみます。
posted by しげ at 20:30| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年04月06日

不達メールの処理のその後。

いろいろ対策を考えましたが、結果的には

 ・メールヘッダのFromアドレスには、受信者に返信して欲しい送信元メールアドレス
 ・メールヘッダのReturn-path,Envelope Fromには、不達時の戻り先用メールアドレス

を設定して、不達時の戻り先用メールアドレスに届いたメールの
本文から送信先メールアドレスを抽出して処理することにしました。
(適切な方法でないと思いつつ。)


本文からのメールアドレスの取り出しでは、単純に正規表現でメールアドレスを
取得しています。
今回のシステムは本文中にメールアドレスが含まれることが無いという運用方法から、
簡便な対応としました。
これが本文にメールアドレスが含まれることがありうるなら、本文からのメール
アドレス取り出しについても十分考慮が必要になるとは思います。


ちなみにこの方法、要は「なりすましメール」なので、スパムメールフィルタに
引っかからないか、ちょっと懸念はあります。
ざっくりテストしてみた限りでは大丈夫だったんですけどね。
ラベル:メール PHP
posted by しげ at 17:37| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年04月02日

エックスサーバーを借りる

仕事でレンタルサーバのエックスサーバーを使うことになりました。

ここでPHPのアプリケーションを動かすんですが、共用環境は
初めてなんで、どこまでができて、どこからができないのか、
良く判ってません。

Xserver、でぐぐるとMac OS関連の情報ばかりで、PEAR/PECLの
ライブラリをどの程度使えるとか、EthnaやSymfonyといった
フレームワークをどうすれば使えるのか(使えないのか)という
情報が見つけられませんでした。。。

さて、どうなることやら。。。
posted by しげ at 16:36| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年03月11日

PHPでリモートデバッグ

いろいろ苦労していたPHPEclipseを使ったリモートデバッグですが、MergeDoc Project
公開されているAll-in-oneパッケージ(JREつき)をインストールしたら、あっさりできました(涙)。
いったいいままでの苦労はなんだったんでしょう。。。

実行中の変数、実行のトレースができるようになったんで、便利になりました。
これから使いこなして行く予定です。


・・・しかし、重たいなぁ。。。
ラベル:Eclipse PDT Pleiades PHP
posted by しげ at 16:07| Comment(2) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2009年02月05日

tcpdfの最新版を試す

ちょっと時間に余裕ができたので、tcpdfの最新版を試してみました。

現在サイトにある最新バージョンは2009-01-29にリリースされた4.5.010です。


修正履歴を確認すると、

4.4.000 (2008-12-07) ⇒ makefont.phpがアップデート
4.0.025 (2008-09-15) ⇒ CJK(Chinese, Japan, Korea)フォントを埋め込まなくてもOK

と記載されてます。


で、期待してセットアップしてみました。


セットアップ方法はこれまでと同様で、tcpdfのフォルダをphp.iniのinclude_pathで
通してやればOK。
必要に応じて、tcpdf/config/tcpdf_config.phpの、K_PATH_MAINの値を書き換えて
あげてください。


日本語フォントの作成方法もほとんど同じですが、makefont.phpユーティリティを使って
フォントファイル(.php .z .ctg.z)を作成したあと、fonts/utilsフォルダにあるreadme.txt
に従って、出来上がったfontの.phpファイルを修正してやる必要があります。

readme.txtを要約すると次のとおり。

(97行目から)

* フォントを埋め込むなら .php .z .ctg.zをtcpdfのfontsディレクトリにコピーしましょう。
* CID-0フォントなら(フォントを埋め込まないなら) .phpを次のとおり修正しましょう。

 o $typeを $type='cidfont0' と書き換えましょう
 o $dwを $dw=1000 と書き換えましょう
 o $enc, $file, $ctg の行を削除しましょう
 o 次の内容を追加しましょう(日本語の場合)

           $enc='UniJIS-UTF16-H';
           $cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'Japan1','Supplement'=>5);
           include(dirname(__FILE__).'/uni2cid_aj16.php');

 o んで、.phpファイルのみ、tcpdfのfontsフォルダにコピーしましょう。

で、実際にやってみると、フォント埋め込み時のファイルサイズも縮小してるので

・フォント埋め込み時=約5.0MB(ver=3.0)
・フォント埋め込み時=約4.4MB(ver=4.5)
・フォント埋め込みなし時=約14KB(ver=4.5)

と埋め込みなしの効果絶大です。

そして、

tcpdf.jpg

と化けてたメイリオフォントも

tcpdf_20090205.jpg


と化けずに表示できるようになりました(喜)。

他にもいろんな改良点があるようですが、これであれば自信を持って
日本語も使えるオープンソースのPDF作成ツールとしてオススメできます。


いやいやホントにフォント埋め込みしか選択肢がなかったら市販のツール購入も
視野に入れなきゃだめだったんで、ありがたいです。

ラベル:TCPDF PHP
posted by しげ at 17:27| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年09月04日

EclipseでPHP開発

これまでは、実行環境にあるソースをテキストエディタで編集して開発や
修正してましたが、

 『ステップ実行がしたいっっ!!』

と思い、Eclipseを使って開発環境を構築することにしました。

既に開発メンバの一人がPHPEclipseを使ってる、ということだったので
私もPHPEclipseを使った環境を構築してみることにしました。


ちなみにEclipseは超初心者です。

─────────────────────────────

試行錯誤 その1)

まずはEclipse本体のダウンロード。
最新版は3.4 Ganymedeらしいので、それをダウンロードしようと
考えたのですが・・・???

ダウンロードページには幾つものリンクがあって、いったい
どれをダウンロードしたら良いかよくわかりません。
雰囲気、EclipseClassic以外の「for〜」はそれぞれ他言語の開発
ツールがセットになってる感じなので、EclipseClassicをダウンロードしました。

圧縮ファイルを解凍したらEclipse本体の準備は完了。
インストールという操作が不要なのはVisualStudioと比べて優れてますね。

Eclipseを起動してみたら、予想通り英語で表示されました。
日本語化はどうしたらいいのか判らないので、ググってみると、
Pleiadesというパッケージを導入すれば良いらしいことが判明しました。
早速最新版の1.2.3.p4をダウンロードして、解凍したファイルをEclipseの
フォルダに上書きして、eclipse.iniをREADMEの指示通りに書き換えてから
Eclipseを起動しました・・・・。


が、日本語化されず。


原因はどうも、Javaの古いバージョン(1.4)が残ってたことみたいです。
後で見たら環境変数にpathの指定が残ってたし。
古いバージョンをアンインストールして、ゴミを削除していった結果、
日本語化に成功しました。
(ここまでですでにかなりの時間を浪費)


そして本題のPHPEclipseのインストールです。
PHPEclipseのサイトに行って、Eclipse3.4対応の
PHPEclipseを探しました。


が、最新版はEclipse3.3対応。


というわけで、試行錯誤 その1は「はじめに戻る」になりました。。

─────────────────────────────

試行錯誤 その2)

Eclipse3.3をダウンロードして、Pleiades1.2.3p4を使い、日本語化。
1度失敗して痛い目にあっているのでここまではスムーズです。

そして、PHPEclipseのダウンロード・・・。


どれをダウンロードすれば良いのか判りません。


サイトにもマニュアルが見当たらず、インストール手順が書かれた
ページも見当たらず。
とりあえず、野生のカンで「 net.sourceforge.phpeclipse.feature-1.2.0.200807121925PRD.zip」
をダウンロードしてみました。
ビルドされたものがあるならsourceは要らないし、〜debug〜となっている
のは『debugコードでも埋め込まれているに違いない』と思ったし。
(↑間違いに気づくのははるかに後で)
解凍後、ファイルをEclipseのフォルダに上書きしてたぶんインストール完了。


Eclipseを起動して設定画面を開くと、「PHPEclipse」というメニューが
あります。
apacheのパスやPHPのパス(XAMPPはインストールしておらず、個別に
apacheとPHPをインストールしてましたので)を指定しました。

いくつかの解説サイトによればこれで設定は完了とのこと。


『これでステップ実行できるようになったのか??』


と思いましたができませんでした。
現状だと、単純にPHPがソースを実行して終わるだけです。
ステップ実行するためには、『デバッガ』が必要でした。


試行錯誤 その3)

デバッガをapache/phpに組み込むにあたり、

『どうせならXAMPPにしてしまえ』

と、個別にインストールしていたapacheとphpをアンインストールして
XAMPPをインストールしました。
ただし、現行のPHPのバージョン(5.2.5)とXAMPPのPHPのバージョンは
合わせておきたかったので、XAMPPの最新版1.6.7ではなく、ひとつ前の
1.6.6aをインストールしました。
(これを探すのも少し手間取りました・・・)


デバッガはDBGというものがあるらしいので、それをダウンロード。

『dbglistnerとdbg_modulesのどっちやねん』

良く読むとdbglistnerはClient向けの様子。
当然サーバ側のDLLが必要なので、dbg_modules2.15.5をダウンロードしました。

DBGのインストール解説によると、解凍したファイルで
PHPのバージョンに合わせたDLLをphp/extにコピーして、php.iniを書き換えろ
とのことなので、指示通りにしてからapacheを再起動しました。
すると『apacheがエラーを吐いてリスタート』し始めました。

apache/logs/error_logを参照すると

PHP Warning: php Startup: Unable to load dynamic library '(略)php_dbg.dll' (略)

とあって、php_dbgのロードに失敗したようです。
原因はZend OptimiserとDBGが干渉するためのようです。
以下の4行をコメントアウトして、無事にapacheは起動するようになりました。

;zend_extension_ts =
;zend_extension_manager.optimizer_ts =
;zend_optimizer.enable_loader =
;zend_optimizer.optimization_level =


これでデバッガも入ったし、デバッグができるようになった!と思い、
プロジェクトを作成してアチコチ設定してみましたが、他の方が解説
しているページにはあるEclipseの設定項目が私のところにはないことに気付きました。

実は、試行錯誤 その2でPHPEclipseのファイルをインストールしましたが、
インストールが足りていないことが原因でした。
しかし、どれを入れたらよいのか判らなかったので、最新版をEclipseに
ダウンロードさせることにしました。

ヘルプのソフトウエアの更新でダウンロード先URLを指定すれば最新版を
ダウンロードしてインストールできるようです。
PHPEclipseの最新版のURL(update.phpeclipse.net/update/nightly)を指定したところ、
ダウンロードエラー・・・・。
(もういい加減イヤになってる)

会社の事務所で作業をやってるのでPROXYサーバの指定が足りていない、
ということは容易に想像できたので設定方法を調べてみました。

設定のインストール/更新で指定できるらしい、という情報を得ましたが、
私のEclipseにはそんな項目はありません。
探してみたところ、一般のネットワーク接続のところにありました。
3.3 から変更になったんですね。。

キチンとPROXYを指定してPHPEclipseを正しくダウンロードしてから、
phpのソースを実行したところ、

Failed to start debug session
reason:
failed to establish connection to client host on 127.0.0.1:10001

と表示されました。



・・・もーいや。
posted by しげ at 18:18| Comment(2) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年07月10日

PEAR::Net_POP3とPOP3サーバ

ExchangeサーバからPOP3でメールを取得する処理で、うまく認証できず
はまってしまいました(PEARのNet_POP3を利用してます)。

動かしてみたら、

USER NOT supported authentication method!.
This server supports these methods: NTLM,
but I support APOP,PLAIN,LOGIN,USER

となってしまい、相手がサポートしてる認証方式と自分が使える認証方式が
異なるから接続できない、とのことです。

認証方式はライブラリが最適なものを選んでくれるのですが、今回の
場合では、USERが使えるにも関わらず、NTLMじゃないと接続できないと
ライブラリが思い込んでしまっているようです。

以前、相手先がQpopperの場合に同様の事象にはまりこんでしまったことが
あり、このときは相手先がサポートしていないAPOPでアクセスしようと
してました。


今回も前回同様に、認証方式の選択をPEARのライブラリの自動選択から
強制選択にして対応しました。
(自動選択のロジック部分の戻り値を強制的に書き換えちゃった。。)


どうしてなんでしょうね?
同じ事象にはまってるひともいるみたいです。

上にも書かれてますが、TELNETでPOP3のポートに接続すると、
CAPAコマンドでサポートしている認証方式を教えてくれます。
困った時はおためしあれ。
ラベル:PEAR PHP POP3
posted by しげ at 20:29| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年07月07日

PHPで和暦変換

PHPで西暦⇒和暦変換って、自前で実装しなくちゃダメなんですね。
当たり前と言えば当たり前ですが、.NET Frameworkには実装が
あったんで、PHPでもライブラリにあるのかなーと。。。

探してみたら、一応、PEARにありました。JpCalendar
まだPEARのライブラリとしては提案レベルのものですが、そのまま
使えそうです。

年号が追加になったときに、ライブラリをピコっと入れ替えたら
対応が終わりになるようにしときたいのですが、ま、そう簡単には
行かないってことですね。
ラベル:PHP PEAR
posted by しげ at 13:07| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年06月24日

tcpdfでCELL内に収まるようにフォントを可変にしたい

tcpdfはCell関数で外枠付きのテキストを表示できます。

これを組み合わせれば、単票形式のPDF文書を作成できるのですが、市販の
帳票ツールのような便利な機能はないので、Cell関数で指定した幅を超える
文字列を出力すると、枠を超えて表示されちゃいます。
たぶんtcpdfだけでなく、fpdf/mbfpdfでも同じはず。
(下の例では、はみ出した文字列の上に隣のCellが表示されてます)

cell1.jpg

これじゃ不細工・・・というか問題オオアリなので、幅に収まるまで
フォントを自動的に小さくするようにしてみました。
フォントの初期値を16にしてますが、この辺は適当に書き換えてください。


/**
* 修正版Cell関数
*
* @access public
* @$pdf tcpdf
* @$w 幅
* @$h 高さ
* @$txt 文字列
* @$border 枠線
* @$ln 改行
* @$align 位置
* @$fontsize フォントサイズ
* @return result null
*/
function Cell($pdf, $w, $h, $txt, $border, $ln, $align, $fontSize = 16){

// 幅によってフォントサイズを6段階で縮小する。
for ($i = 0; $i < 6; $i++ ) {
if ( $w >= ( mb_strlen(trim($txt),'UTF-8')) * ($fontSize - $i) * 0.35 ) {
$pdf->SetFontSize($fontSize - $i);
$pdf->Cell($w, $h, $txt, $border, $ln, $align);
$pdf->SetFontSize(16);
return;
}
}

// やっぱり収まらなかったときの処理を入れる必要あり。

}


んで、

$tcpdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8' );
$tcpdf->Cell(はば, たかさ, 文字列, 枠線・・・・);

とする代わりに

$this->Cell($tcpdf, はば, たかさ, 文字列, 枠線・・・・);

として呼んでもらえれば、

cell2.jpg

こんな感じで縮小して表示できます。

応用してフォントを縮める単位を0.5pt単位にするとか、Cellの高さ
から収まらなければMultiCellにして複数段組にしちゃうとか、
加工して使うとよいかなーと。

ちなみに0.35という数字はmmとptの変換の計数です。
どっかで見つけてきたけど、出典不明です。。


そういえばtcpdfのバージョンアップがあったみたいですね。
最新版だと、PDF文書作成後の動きが変わってしまったんで使ってないですが。
ラベル:TCPDF PDF PHP
posted by しげ at 21:37| Comment(0) | TrackBack(1) | PHP | このブログの読者になる | 更新情報をチェックする

2008年06月09日

tcpdfでメイリオ

tcpdfでメイリオフォントを使ってみようと試してみましたが、


tcpdf.jpg


こんな感じで文字化けだらけになってしまいました。。。
2008/6/6リリースのtcpdf最新版(3.0.015)でも試してみましたが
状況変わらず。
他のフォント(UIゴシックや明朝)ではちゃんと表示されているので
メイリオの場合のみ発生する様子。
font作成時に大量に出力されるワーニングにエラーでもでてるの
かも。

帳票のフォントとしてはメイリオが一番お客さん受けしそう
なんだけどなぁ。。。


ちなみに3.0.015ではtcpdf_config.phpのパス修正なしで使える
ようになったみたいですね。



(2008/06/09 22:08続報)

文字コード表と見比べてみたところ、2F00〜2FD5にある文字がダメ
みたいですね。
たとえば『山』はMS Pゴシックだと5C71ですが、メイリオだと5C71
(CJK Unified Ideograph)だけではなく、2F2D(kangxi Radical Mountaion)
にもありますね。
うーん、奥が深そう。。。
ラベル:PHP PDF
posted by しげ at 21:54| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年05月21日

しょうゆとソース

今日の作業は客先の検証環境セットアップ。

Apache入れて、PHP入れて、PostgreSQL入れて・・・。

DBのデータを検証しやすいようにphpPgAdminもインストールして
立ち上げてみたけど、なぜかエラー画面が。


orz phpMyAdmin持ってきてた・・


しょうゆとソースを間違えて刺身食べた時くらいの
取り違え&衝撃でした。

明日こそ、phpPgAdmin持って行かなくては。
posted by しげ at 22:44| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年05月14日

NetCommonsを使ってみる

デュアルモニタの右端で律儀にニュースを更新してるGoogleデスクトップで、CMSという
単語が目にとまり、記事をよんでみました。

NetCommonsという聞いたことがないCMSを導入したとか。
興味があったんで、早速DLしてみました。


うたい文句通り、インストールは簡単。
ただ、インストール中に

検知されたルートディレクトリのパスは、設定されたもの(XOOPS_ROOT_PATH)と一致しています。


というメッセージが。
気付かなかったんですがXOOPSだったんですね。
キレイに整えられていると思いますが、XOOPSベースならXOOPS本体をいれた
ほうが楽しいかな?(構築する側の興味本位の意見ですが)
デザインをいじりたおすのは大変そうだし。


CMSとしてオールインワンのパッケージになっていますし、利用者向けの
ドキュメントやヘルプが充実しているので、利用者としてみれば、
よくできてると思います。


・・・。
余談ですが、この導入費用の100万って安いのかな?





ラベル:PHP CMS
posted by しげ at 21:40| Comment(0) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年05月13日

TYPO3を入れてみる

今度はTYPO3(最新の4.2)を試してみました。


日本のオフィシャルサイトはありますが日本語のセットアップ
マニュアル
は原文の直訳で、あまり親切じゃないです。
正直、他のサイトを見たほうが有益です。


インストール自体は簡易なんですが、インストール後に管理画面を
どうやっても日本語にできませんでした。
作成したページはちゃんと日本語で表示されるので、管理画面が
英語表記で我慢できればつかうことはできます。

さんざん苦労して諦めて、自宅のXAMPP環境で試してみると、
手順通りで日本語化できました(半泣)。
(※参考サイト


管理サイトのExtension ManagerからLanguage Packをダウンロード
するために、Webサーバから外部のサイトにアクセスするのですが、
Webサーバ自体がProxyの内側にいる場合はProxyの設定が必要、
ということが原因のようです。

当たり前ですが見落としてました。


・・・で、その設定は???
現在未解決です(涙)。
configのcurlあたりがあやしそうなのですが。
またわかり次第、書きます。


typo3は機能は充実していて、教育機関向けextensionや公共団体向けextensionなど、どういうものなのかみてみたい機能もあったのですが、会社で日本語化できないので採用見送り。
いや、ほんと、つかれました。


しかしこのところ英語サイトをみたり、HTML解析したり、CSSみたり、JavaScript読んだりと細かい文字を追いかけたりすることが多いせいか、異様に目が疲れます。
開発でプログラム作成してるときにはあまり感じないので、適切にインデントされてないせいかな?と思っています。
コンパイルやアプリ側にはインデントは意味がないので(意味がある開発言語もあるけど)、適切でないというのは主観なんだけど。

あー、気持ち悪くて吐きそう。


2008/05/13:追記

日本語化できた自宅PCのtypo3conf/l10n/jp以下全てを会社PCの
typo3conf/l10nにコピーして、User tools/User settingsの
LanguageをJapaneseに変更したら無事、日本語化できました。

たぶん、オフィシャルのJapanese Language PackのZIPファイルを
ダウンロードして、それぞれをtypo3conf/l10n/jpに入れれば
日本語化ができそうな予感。
ラベル:CMS PHP TYPO3
posted by しげ at 12:52| Comment(3) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする

2008年05月12日

MODxを入れてみる

島根県CMSは環境構築が大変そうなので、XAMPPで構築できそうな
CMSをさがしてみました。

Xoopsはスルーして、みつけたのがTYPO3MODx
今回はMODxを試してみました。


インストールはウィザードがあるので簡単です。
(※解説ページはこちら
特にはまることもなく、インストール終了しました。


ページはエクスプローラのフォルダ構成のように、ツリー構造で
追加していきます。
この形式が一番わかりやすいですね。


何よりも優れていると感じたのは、Smartyのようなテンプレート
エンジンを利用してサイトを構築するみたいに、HTML+CSSで作成した
ページデザインを簡単にサイトのテンプレートとして利用できること
です。

ちょっとしたサイトならデザイナーに発注する必要ないし、既存の
静的コンテンツのサイトがあるなら、そのベースデザイン(CSS)を
流用して、短期間で動的サイトに作り替えられるわけです。
ページ作成もJavaScriptベースのエディタでラクに作れるし。
静的コンテンツを吐き出すことが出来るのも魅力的です。


近いうちにうちの会社のサイトもModXで置き換えちゃうかも!
ラベル:PHP MODx CMS
posted by しげ at 17:11| Comment(2) | TrackBack(0) | PHP | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。