メイン

2007年04月02日

PHP エラーメッセージ出力をやめる

Notice: Only variable references should be returned by reference in MDB/Common.php on line 415

こんなエラーメッセージを消したい場合、error_reporting(E_ALL);をコメントにする。
もしくはレベルを変えておく。

*Maple,Ethnaの場合

2007年04月01日

Smarty から PHPへの変数受け渡し

前回の続き
$this->_tpl_vars[Smartyでの変数名] でPHPのほうへ渡せるようです

こんな風に
{foreach from=$action.tags|smarty:nodefaults item=tag}
    {php}print urlencode($this->_tpl_vars['tag']);{/php}
{/foreach}

PHP配列メモ

$tags = "bikini wet girl model swimsuit camera photoshoot outdoors Array Swimsuit Japanese";

これを半角スペースで区切って配列にする場合は
$as = split(" ",$tags);
foreach ($as as $a){
     $this->tags[] = $a;
}

Smartyの受け側では
{foreach from=$action.tags|smarty:nodefaults item=tag}
    {$tag}
{/foreach}

Smarty htmlタグがそのまま表示される場合の対策

{$var|smarty:nodefaults}

こんな風にすれば回避できるようです

2007年03月31日

Smarty 配列のデバッグ

あんまり慣れてないのか未だにうまくいかないこともある
Mapleで使ってたんだけど

{foreach from=$action.dtoList|smarty:nodefaults item=data}
    {$data.id}
{/foreach}

|smarty:nodefaults がないとうまく出ない場合も・・・

こんなメソッドでデバッグ

{action->getDtoList|var_dump}

{action->getDtoList assign=list}
  {$list|var_dump}
{$action.dtoList|var_dump}

{$action.data|@debug_print_var}

2007年03月21日

PHP Eclipse 設定

EclipseでPHPでの開発を行うためのプラグインのインストール方法です。
  *画像はクリックすると大きく表示します。

eclipseの「ヘルプ」→「ソフトウェア更新」→「検索およびインストール」 で設定窓を表示します。

「新規リモートサイト」を作成します。

チェックを入れて終了 あとは画面の指示に従ってインストールします。

2007年03月17日

symfony インストール windows

PHPフレームワークsymfonyのインストールです

pear upgrade PEAR
pear channel-discover pear.symfony-project.com

pear install symfony/symfony-beta
downloading symfony-1.0.0.tgz ...
Starting to download symfony-1.0.0.tgz (1,910,892 bytes)
......................................................................
......................................................................
......................................................................
......................................................................
.........................................done: 1,910,892 bytes
install ok: channel://pear.symfony-project.com/symfony-1.0.0

symfony -V で
symfony version 1.0.0 と表示されればインストール成功

2007年03月10日

mb_language設定

PHP Fatal error: Call to undefined function mb_language() in xxxx

こんなエラーがでたら
php.ini の extension=php_mbstring.dll を有効にします

php_mbstring.dll 内に mb_language の設定も含まれているそうです

2007年02月26日

SAJAX

AJAXをシンプルに使うライブラリがリリースされています。
05年末ごろにJavaのクラス内部のメソッドをJavaScriptで呼び出せるAPIがリリースされています。
PHPに限って言えばそんなことができるようです。
Sajax.phpを呼び出した後に関数を定義してやればJavascriptでコールできるようです。

詳しくはサンプルを参照
http://www.modernmethod.com/sajax/

2007年02月24日

AMP on a USB 設定 追記

httpd.conf に追加

LoadModule rewrite_module modules/mod_rewrite.so

<Directory "/pdrive/www">
AllowOverride All
Order allow,deny
Allow from all
</Directory>

AddDefaultCharset ISO-8859-1 をコメントにする

php.ini

記述追加&変更
include_path=".;/pdrive/php-5.0.3/PEAR;/pdrive/php-5.0.3/PEAR/pear"
extension_dir="/pdrive/php-5.0.3/ext"

コメントを外す
;extension=php_mbstring.dll

記述変更
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
;mbstring.func_overload = 0

2007年02月12日

AMP on a USB 設定

USBメモリ内に Apache + PHP + MySQL の開発環境を設定することができます。
これで外出先でのデモや開発が容易に行えます。

本家サイトはこちら。
http://www.firepages.com.au/php_usb.htm
   ちなみにこのサイトは数年前にApache + PHP + MySQL を一括でインストールするツールを配布していたサイトでした。 トレードマークのマイケルジャクソンに見覚えがありました。

php_usb というZIPファイルをダウンロードして解凍後、USBメモリにコピーします。
本家サイトどおりにやりました。
ディレクトリ構成はこうなります。

$usb:/
-------------start.bat
-------------pdrive/
------------------------php.ini
------------------------start.php
------------------------apache-2.0.50/
------------------------php-5.0.3/
------------------------mysql/
------------------------www/ *ドキュメントルート
------------------------sess/ *セッションデーターのための空ディレクトリ

私はApache, NySQLはWindowsにインストールしているものをそのままコピーしています。
Apache
C:\Program Files\Apache Group\Apache2以下を USB:\pdrive\apache-2.0.50以下にコピーして
conf ファイルのみ配布されているものに置き換えます。

MySQL
C:\Program Files\MySQL\MySQL Server 5.0以下を USB:\pdrive\mysql以下にコピーしました。

PHP
PHP本家サイトよりphp-5.0.3-Win32.zip をダウンロードして解凍後、USB:\pdrive\php-5.0.3にコピーしました。

これで準備はほぼ完了です。
しかしこのままでは動かなかったのでconfファイルの書き換えが必要でした。
こんな風にしてチェックしてみるといいでしょう。

USB:\pdrive\apache-2.0.50\conf\httpd.conf の56行目
「LoadModule ssl_module modules/mod_ssl.so」をコメントにします。
これはもともとインストールしていたApacheが apache_2.0.51-win32-x86-no_ssl.exe でSSL対応でなかったためと思われます。

またUSB:\pdrive\php.ini も修正していたほうがよさそうです。
「session.save_path = "\\pdrive\\sess"」をコメントに
 *phpMyAdminを使ったときにセッションをこのディレクトリに見に行って失敗していました。
   セッション保存領域は明示的にしないほうがよさそうです。

これが終わったら start.bat をダブルクリックして起動してみましょう。
http://localhost:85/ でブラウザが起動してディレクトリが見えれば成功です。

うまくいかない場合は、start.bat で呼び出されるUSB:\pdrive\start.php 内部をコメントにしたりして試してみてください。
これがUSB内のアプリケーションを制御している大本になっています。

echo "starting MySQL ....\n";
pclose(
popen(
'start pdrive\\mysql\\bin\\mysqld-nt.exe --basedir=/pdrive/mysql --datadir=/pdrive/mysql/data --port=3307 --console --standalone'
,'r' )
);
echo "starting apache....\n";
flush();
pclose(popen('start pdrive\\apache-2.0.50\\bin\\apache.exe','r'));
flush();
sleep(5);
echo 'opening localhost';
exec( 'start http://localhost:85');


2007年02月08日

PHP5 で YouTube API を使った例

PHP5より実装されたDOM拡張モジュールでYouTube検索APIを使ったコードの例です。
電脳卸の例とは違ったメソッドを使っています。
YouTube API の使い方は http://www.youtube.com/dev_docs をご覧ください。

 //URL
 $request = "http://www.youtube.com/api2_rest";

 //メソッド
 $method ="youtube.videos.list_by_tag";

 $url = $request."?method=$method&dev_id=YouTubeデベロッパーID&tag=検索語(UTF-8)&page=ページ数";

 // 結果を格納する配列
 $aryList = array();
 
 try{
  // YouTubeへリクエストを投げた後、
  // 検索結果のXML文書をパース
  $doc = new domDocument();
  $doc->load($url);
  
  // ルート要素を取得
  $root=$doc->documentElement;
  $results=$root->childNodes;

  // 各Result要素を出力
  foreach($results as $result){

   $items=$result->childNodes;

   // さらに各要素を解析する
   foreach($items as $item){

    $author  = $item->getElementsByTagName('author')->item(0)->textContent;

    $id  = $item->getElementsByTagName('id')->item(0)->textContent;

    $title  = $item->getElementsByTagName('title')->item(0)->textContent;

    $length_seconds = $item->getElementsByTagName('length_seconds')->item(0)->textContent;

    $rating_avg = $item->getElementsByTagName('rating_avg')->item(0)->textContent;

    $rating_count = $item->getElementsByTagName('rating_count')->item(0)->textContent;

    $description = $item->getElementsByTagName('description')->item(0)->textContent;

    $view_count = $item->getElementsByTagName('view_count')->item(0)->textContent;

    $upload_time = $item->getElementsByTagName('upload_time')->item(0)->textContent;

    $tags  = $item->getElementsByTagName('tags')->item(0)->textContent;

    $url  = $item->getElementsByTagName('url')->item(0)->textContent;

    $thumbnail_url = $item->getElementsByTagName('thumbnail_url')->item(0)->textContent;

    $result_array = array(
     "author"     => $author,
     "id"       => $id,
     "title"      => $title,
     "length_seconds" => $length_seconds,
     "rating_avg"   => $rating_avg,
     "rating_count"  => $rating_count,
     "description"   => $description,
     "view_count"   => $view_count,
     "upload_time"   => $upload_time,
     "tags"      => $return_tag,
     "url"       => $url,
     "thumbnail_url"  => $thumbnail_url
    );

    $aryList[]=$result_array;
    
   }
  }

 }catch(DOMException$e){

  print $e->getCode()";
  print .$e->getMessage();

 }

2007年02月06日

XML_Serializer で 電脳卸APIを使う

電脳卸DWSをPHPで使ってみます。
電脳卸のアカウントをお持ちでない方は↓からどうぞ。

商品無料仕入れ戦隊『電脳卸』

XML_Serializerはここからダウンロードするか pear install --onlyreqdeps XML_Serializer-beta でインストールします。

require_once "XML/Unserializer.php";

$url = "http://webservice.d-064.com/get_tag.php?"
 ."sword=" 検索文字列
 ."&email=" ログインID
 ."&hid=" 販売店ID
 ."&type=" heavy/lite/category(指定されていない場合はlite)
 ."&page=" 表示ページ(指定されていない場合は1)
 ."&sort=" 0:昇順 1:降順(指定されていない場合は0)
 ."&category_id=" カテゴリID   *これはなくてもいいようです

$options = array(  'complexType' => 'array' );

$xmldoc = join("",file($url));

$Unserializer =& new XML_Unserializer($options);
$Unserializer->setOption('parseAttributes', true);
$status = $Unserializer->unserialize($xmldoc);
$data = $Unserializer->getUnserializedData();

print_r( $data );  これで検索結果を確認できます

$data[Details] に商品情報が入っていますので
ページ単位での商品タイトルをデバッグするときは
for($i=0;$i

   echo $data[Details][$i][ProductName];
}
こんな感じでOKです。
配列をそのまま変数に入れてSmartyに落としてやるのがもっとも簡単なようです。


2007年02月05日

DMM RSS解釈

PHPを覚えたてのころのDMMのサイトジャンル別RSSを読み込んで自分のアフィリエイトIDを付加してHTMLページに落とすというプログラムを組みました。

今だったら、XML/RSS.php とか SimpleXML とか Smarty とか使ってもっとシンプルに組みますけどw
Cashも使って毎度のリクエストは避けたほうがいいですねー

DMMのRSSはちょっと違うからこんな風に強引に組みました。

<?php

//ヘッダはUTF-8
header(" Content-Type: text/html; charset=UTF-8" );

//RSSのURL
$url = "http://www.dmm.co.jp/monthly/alice/-/list/=/sort=date/rss=create/_jloff=1/";

//自分のアフィリエイトID
$id = "dmmのid";

$i = 0;
$_data = null;

//改行とかそういう表示上の都合で後で使う
$flg = 0;
$content_flg = 0;

//RSSを読み込む
if( $_http = fopen( $url, "r" )){

  while( !feof( $_http ) ){
    $_data = fgets( $_http, 1024 );

    if($flg == 1 ){
      //何もしない
      if( substr_count($_data , "item") >0
        || substr_count($_data , "description") >0
        || substr_count($_data , "dc:date") >0
        || substr_count($_data , "dc:creator") >0
        || substr_count($_data , "package") >0
      ){
      
        //タイトルタグを置き換える
      }else if( substr_count($_data , "title") >0 ){
        $title = "";
        $_data = str_replace("<title>", "", $_data);
        $_data = str_replace("</title>", "", $_data);
        $title = $_data;
       
        //リンクがあれば自分のidを付加する
      }else if( substr_count($_data , "link") >0 ){
        $link = "";
        $_data = str_replace("<link>", "", $_data);
        $_data = str_replace("</link>", "", $_data);
        $link = $_data.$id;
        
      //リンク整形
      echo "<table width=800 class=\"maintable\" >";
      echo "<tr><td colspan=2 align=left valign=middle>";
      echo "<a href=\"$link\" target=\"_blank\"><br><b><font style=\"color : blue;\" style=\"font-size:16px\" >$title</font></b></a>";
      echo "</td></tr>";

      //コメントの中に画像が入っているのでこんな風に出す
      }else if( substr_count($_data , "<content:encoded>") >0 ){
        $content_flg = 1;
        $_data = str_replace("<![CDATA[", "", $_data);

        $imgst = strpos($_data , "<img",0);
        $imgend = strpos($_data , "</a>",0);
        $linkimage = substr($_data, $imgst, $imgend);
        
        //リンク元の画像がない場合はNOW PRINTING画像を出す
        if($linkimage == '') $linkimage = "<img src=\"http://yourvideo.heteml.jp/file/printing.jpg\" border=\"0\">";
        echo "<tr><td class=\"maintd\"><a href=\"$link\" target=\"_blank\">$linkimage</a>";

      //以下データ整形&リンクができればIDを付加してリンクする
      }else if( substr_count($_data , "収録時間") >0 ){
        $content_flg = 1;
        $_data = "</td><td align=left>".$_data;
        $_data = str_replace("\">", "$id\">", $_data);
        echo $_data;

      }else if( substr_count($_data , "ムービープレビュー") >0 ){
        $content_flg = 1;
        $_data = "<a href=\"$link\" target=\"_blank\"><b>もっと見る!</b></a></td></tr><tr><td colspan=2 align=center>".$_data;
        echo $_data;

      }else if( substr_count($_data , "</content:encoded>") >0 ){
        $content_flg = 1;
        $_data = str_replace("]]>", "", $_data);
        $_data = $_data."<br><br></td></tr></table><br>";
        echo $_data;

      }else{
        $_data = str_replace("\">", "$id\">", $_data);
         echo $_data;
      }
    }

    if( substr_count($_data , "/image") >0 ) $flg = 1;
    $i++;
  }

  fclose( $_http );
}
?>

2007年02月01日

こんなフレームワーク見つけた


プロジェクト: Kaede
概要

KaedeはMaple(https://sourceforge.jp/projects/maple/)から派生したWebアプリケーション・フレームワークです。 DIContainerを中心とした高い柔軟性と機能性の実現を目指して開発しています。

DIを重視しているところが特徴なのかな?
PHPのフレームワークではめずらしい
早速使ってみようw

2007年01月25日

PHP開発支援ツール

・KoebiStudio Expr
PHP、HTMLの開発エディタであ
WEBサイト開発を協力に支援するオール

http://koebi.net/

見た目はおしゃれでいい感じです

ただし・・・

PHP開発時にブレークポイントを指定して実行は可能か?現在、KoebiStudioにはブレークポイント(ステップ実行)や実行時の変数内容の表示など
デバッグに関する機能は実装されていません。
また、これらの機能の実装予定は未定となっています

2007年01月21日

PHPDOC 生成 Win/Linux

JavaDocみたいにドキュメントを自動生成するツール
本家サイトは http://www.phpdoc.org/

インストール:pear install --alldeps phpdocumentor

タグの書き方は ここ

ドキュメント出力は -t でターゲット指定、-d で出力ディレクトリ指定
phpソースディレクトリまで移動して
phpdoc -t ./ -d ./ が楽

2006年11月20日

PHPでのメール作成

文字コード変換を忘れないように

$title = mb_convert_encoding( $subject,"ISO-2022-JP","EUC-JP");

$body = mb_convert_encoding( $msg,"ISO-2022-JP","SJIS");

こんな風に記述すること

2006年11月02日

PHP PDO インストール

Linuxの場合は一発でうまくいく。
Windowsの場合はエラーがでてできないっぽい。 調査中です

[root@localhost root]# pecl install pdo
downloading PDO-1.0.3.tgz ...
Starting to download PDO-1.0.3.tgz (52,613 bytes)
.............done: 52,613 bytes
12 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
building in /var/tmp/pear-build-root/PDO-1.0.3
running: /tmp/tmpFBlmMq/PDO-1.0.3/configure
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking whether gcc and cc understand -c and -o together... yes
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for PHP prefix... /usr/local
checking for PHP includes... -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext
checking for PHP extension directory... /usr/local/lib/php/extensions/no-debug-non-zts-20050922
checking for PHP installed headers prefix... /usr/local/include/php
checking for re2c... no
configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking whether to enable PDO support... yes, shared
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc static flag works... yes
checking if gcc supports -fno-rtti -fno-exceptions... yes
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no

creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=compile gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo.c -o pdo.lo
mkdir .libs
gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo.c -fPIC -DPIC -o .libs/pdo.o
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=compile gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_dbh.c -o pdo_dbh.lo
gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_dbh.c -fPIC -DPIC -o .libs/pdo_dbh.o
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=compile gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_stmt.c -o pdo_stmt.lo
gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_stmt.c -fPIC -DPIC -o .libs/pdo_stmt.o
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=compile gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_sql_parser.c -o pdo_sql_parser.lo
gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_sql_parser.c -fPIC -DPIC -o .libs/pdo_sql_parser.o
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=compile gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_sqlstate.c -o pdo_sqlstate.lo
gcc -I. -I/tmp/tmpFBlmMq/PDO-1.0.3 -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/tmpFBlmMq/PDO-1.0.3/pdo_sqlstate.c -fPIC -DPIC -o .libs/pdo_sqlstate.o
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=link gcc -DPHP_ATOM_INC -I/var/tmp/pear-build-root/PDO-1.0.3/include -I/var/tmp/pear-build-root/PDO-1.0.3/main -I/tmp/tmpFBlmMq/PDO-1.0.3 -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -o pdo.la -export-dynamic -avoid-version -prefer-pic -module -rpath /var/tmp/pear-build-root/PDO-1.0.3/modules pdo.lo pdo_dbh.lo pdo_stmt.lo pdo_sql_parser.lo pdo_sqlstate.lo
gcc -shared .libs/pdo.o .libs/pdo_dbh.o .libs/pdo_stmt.o .libs/pdo_sql_parser.o .libs/pdo_sqlstate.o -Wl,-soname -Wl,pdo.so -o .libs/pdo.so
creating pdo.la
(cd .libs && rm -f pdo.la && ln -s ../pdo.la pdo.la)
/bin/sh /var/tmp/pear-build-root/PDO-1.0.3/libtool --mode=install cp ./pdo.la /var/tmp/pear-build-root/PDO-1.0.3/modules
cp ./.libs/pdo.so /var/tmp/pear-build-root/PDO-1.0.3/modules/pdo.so
cp ./.libs/pdo.lai /var/tmp/pear-build-root/PDO-1.0.3/modules/pdo.la
PATH="$PATH:/sbin" ldconfig -n /var/tmp/pear-build-root/PDO-1.0.3/modules
----------------------------------------------------------------------
Libraries have been installed in:
/var/tmp/pear-build-root/PDO-1.0.3/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

running: make INSTALL_ROOT="/var/tmp/pear-build-root/install-PDO-1.0.3" install
Installing shared extensions: /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib/php/extensions/no-debug-non-zts-20050922/
Installing header files: /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/
Installing PDO headers: /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/ext/pdo/
running: find "/var/tmp/pear-build-root/install-PDO-1.0.3" -ls
6782989 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3
16393 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr
49161 4 drwxr-xr-x 4 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local
147465 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib
163854 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib/php
196622 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib/php/extensions
294926 4 drwxr-xr-x 2 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib/php/extensions/no-debug-non-zts-20050922
294927 312 -rwxr-xr-x 1 root root 312033 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo.so
344078 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include
442377 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php
458766 4 drwxr-xr-x 3 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/ext
475150 4 drwxr-xr-x 2 root root 4096 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/ext/pdo
475153 4 -rw-r--r-- 1 root root 3016 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/ext/pdo/php_pdo.h
475151 24 -rw-r--r-- 1 root root 23679 11月 2 11:16 /var/tmp/pear-build-root/install-PDO-1.0.3/usr/local/include/php/ext/pdo/php_pdo_driver.h

Build process completed successfully
Installing '/var/tmp/pear-build-root/install-PDO-1.0.3//usr/local/lib/php/extensions/no-debug-non-zts-20050922/pdo.so'
Installing '/var/tmp/pear-build-root/install-PDO-1.0.3//usr/local/include/php/ext/pdo/php_pdo.h'
Installing '/var/tmp/pear-build-root/install-PDO-1.0.3//usr/local/include/php/ext/pdo/php_pdo_driver.h'
install ok: channel://pecl.php.net/PDO-1.0.3
You should add "extension=pdo.so" to php.ini

S2Container.PHP5 インストール

PHP5 はインストールされているものとします

http://s2container.php5.seasar.org/ このページから S2Container-1.1.1.gz をダウンロード

コマンドプロンプトより pear install C:\download\S2Container-1.1.1.gz
のようにアーカイブまでフルパスで指定する

install ok !

2006年11月01日

PHP での 環境情報取得

indexOf を勝手に定義して使っていますw

function indexOf($haystack, $needle) { 
$pos = strpos($haystack, $needle);
if($pos=="") return -1;
else  return $pos;
} 

$ua = strtoupper($_SERVER["HTTP_USER_AGENT"]);
$os = "";

if (indexOf($ua,"3.1") >= 0) $os = "Windows 3.1";
else if (indexOf( $ua,"95") >= 0) $os = "Windows 95";
else if (indexOf( $ua,"98") >= 0) $os = "Windows 98";
else if (indexOf( $ua,"NT 5.1") >= 0) $os = "Windows Xp";
else if (indexOf( $ua,"NT 5.0") >= 0) $os = "Windows 2000";
else if (indexOf( $ua,"NT 5.0") >= 0) $os = "Windows NT";
else if (indexOf( $ua,"MAC") >= 0) $os = "Macintosh";
else if (indexOf( $ua,"X11") >= 0) $os = "UNIX";
else
{
$os = "不明";
}


$browser = "";

if (indexOf($ua,"SAFARI") >= 0) $browser = "Safari";
else if (indexOf($ua,"OPERA") >= 0) $browser = "Opera";
else if (indexOf($ua,"NETSCAPE") >= 0) $browser = "Netscape";
else if (indexOf($ua,"MSIE") >= 0) $browser = "IE";
else if (indexOf($ua,"FIREFOX") >= 0) $browser = "FireFox";

2006年10月25日

PHP で XVIII. CURL, Client URL Library 関数 を使う Windows

Windows XP + PHP5

php.ini 内の「extension=php_curl.dll」のコメントを外す
アーカイブ内のlibeay32.dll および ssleay32.dll を C:\WINDOWS\system32 フォルダにコピーする

2006年10月09日

Pear DB MySQL 文字コードセット

$db = DB::connect($dsn);
if (DB::isError($db)) { die($db->getMessage()); }

この後に
「$db->query('SET NAMES ujis');」 でujis設定します

?charset=ujis では不十分でした
MySQL 5 にアップグレードするときは要注意


2006年09月27日

symfony インストール

PHPフレームワーク Symfony インストール

pear でインストールします

pear channel-discover pear.phing.info
pear install phing/phing

pear channel-discover pear.symfony-project.com
pear install symfony/symfony

2006年09月24日

Windows PHPでSQLiteを利用する場合

php.ini に記述追加

extension=php_pdo.dll
extension=php_sqlite.dll

「extension=php_pdo.dll」がデフォルトの記述にない場合があるので要注意

2006年09月09日

PEAR DB 接続先定義

MySQLのときもPostgreSQLのときも接続先は直書きではなく変数で定義して行ったほうがいいようです

$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'root';
$MYSQL_PASSWORD = 'pass';
$MYSQL_DATABASE = 'dbname';
$MYSQL_PREFIX = '';
$dbType = "mysql";

$dsn = "$dbType://$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST/$MYSQL_DATABASE";


// データベースへ接続
$con = DB::connect($dsn);

2006年08月27日

PHPでのRSS解析

pear XML を使えば非常に簡単です

*朝日新聞のRSSを取得する場合

  require_once("XML/RSS.php");

  // RSSファイルへのURIをコンストラクタの引数に渡す
  $rss =& new XML_RSS("http://www3.asahi.com/rss/index.rdf");

  // RSSファイルをパースする
  $rss->parse();

  // getItemsメソッドを使用して全item要素を取得
  foreach ($rss->getItems() as $item) {
    $title = mb_convert_encoding($item['title'], 'UTF-8', 'auto');
    $link = $item['link'];
    $description = mb_convert_encoding($item['description'], 'UTF-8', 'auto');
  }


2006年07月31日

ZenCart インストール

PHPでできたオープンソースのショッピングサイト構築ツールZenCartをインストールしてみました
公式ページより最新版アーカイブをダウンロードしてサーバーにアップロード後、
XOOPSのインストールのようにインストール画面に沿って進めます。

*ちなみにWORDファイルをHTMLで保存したものなので見にくいです

ここ

2006年07月24日

PEAR HTML_Ajax インストール

HTML_Ajax がまだ安定意版ではないようなのでバージョンを指定してインストール

pear install HTML_Ajax-0.4.1

2006年07月23日

HTTP_Download のインストール

pear upgrade HTTP
pear install Net_URL
pear install Net_Socket
pear install HTTP_Request
pear install HTTP_Client
pear install HTTP_Header
pear install Archive_Zip-0.1.1
pear install System_Command
pear install MIME_Type
pear install HTTP_Download

順番どおりやらないとおこられるようです

2006年07月08日

Ethna  インストール

PHPフレームワークEthnaにはPEAR:DB Smarty が必要です。

# pear list で確認
入ってなかったらインストール
# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
HTML_Template_IT 1.1 stable
Net_UserAgent_Detect 2.0.1 stable
PEAR 1.4.9 stable
XML_Parser 1.2.7 stable
XML_RPC 1.2.2 stable
XML_Serializer 0.18.0 beta
XML_Util 1.1.1 stable

# pear install DB
downloading DB-1.7.6.tar ...
Starting to download DB-1.7.6.tar (-1 bytes)
................................................................................
..................................................................done: 735,232
bytes
install ok: channel://pear.php.net/DB-1.7.6

Smartyは本家 http://smarty.php.net/ から最新の安定板をダウンロードします
# tar xvzf Smarty-2.6.14.tar.gz
展開後、libディレクトリをSmartyの名前にしてinclude_pathにコピー
# cp -R /home/alice/Smarty-2.6.14/libs /usr/local/lib/php/Smarty

Ethna は pear コマンドでインストールします
# pear channel-discover pear.ethna.jp
Adding Channel "pear.ethna.jp" succeeded
Discovery of channel "pear.ethna.jp" succeeded

# pear install ethna/ethna-beta
downloading Ethna-2.2.2006060715.tar ...
Starting to download Ethna-2.2.2006060715.tar (573,440 bytes)
................................................................................
...................................done: 573,440 bytes
install ok: channel://pear.ethna.jp/Ethna-2.2.2006060715

Chnanel Server を経由してインストールしているため、バージョンアップの際にもコマンド一発でアップグレードできます
# pear upgrade ethna/ethna

*Windows, Linuxともに同じようにインストールできました
  windowsの場合はPathに「C:\php\PEAR」を追加

あとはこんな風に追加モジュールをインストール
pear install http://pear.project-p.jp/get/Ethna_Haste-0.9.0.tgz

PHP POSTで受け取った文字列の文字コード変更

フォームから受け取るデータはhtmlと同じSJISになります。
受け取った後に文字コードを変換する作業が必要となります。
SJISからUTF-8に変換する例

foreach ($_POST as $key=>$item) {
if (get_magic_quotes_gpc()) {
$item = stripslashes($item);
}
$item = mb_convert_kana($item, 'KV', 'SJIS');
$_POST[$key] = mb_convert_encoding($item, 'UTF-8', 'SJIS');
 }

Youtube API を使ってリクエストを投げる際などに必要
Googleは単なる文字列の文字コード変更でOK


PHP PEAR :: Package :: XML_Serializer

このパッケージを使うと、配列やオブジェクトのデータをXML形式に変換できます。
その逆にXMLを配列などに変換することも可能です。

[root@localhost root]# pear install XML_Unserializer
No releases available for package "pear.php.net/XML_Unserializer"
Cannot initialize 'XML_Unserializer', invalid or missing package file
Package "XML_Unserializer" is not valid
install failed
[root@localhost root]# pear install XML
No releases available for package "pear.php.net/XML"
Cannot initialize 'XML', invalid or missing package file
Package "XML" is not valid
install failed
[root@localhost root]# pear install --onlyreqdeps XML_Serializer-beta
downloading XML_Serializer-0.18.0.tar ...
Starting to download XML_Serializer-0.18.0.tar (-1 bytes)
.................................done: 154,112 bytes
downloading XML_Util-1.1.1.tar ...
Starting to download XML_Util-1.1.1.tar (-1 bytes)
...done: 48,128 bytes
downloading XML_Parser-1.2.7.tar ...
Starting to download XML_Parser-1.2.7.tar (-1 bytes)
...done: 80,384 bytes
install ok: channel://pear.php.net/XML_Parser-1.2.7
install ok: channel://pear.php.net/XML_Util-1.1.1
install ok: channel://pear.php.net/XML_Serializer-0.18.0

2006年07月02日

PHP5 インストール windows

WindowsにPHP5をインストールする方法
Apache 2.0.x はインストールされているものとします。

http://jp.php.net/get/php-5.1.4-Win32.zip/from/a/mirror
ここからWindows用バイナリをダウンロード php-5.1.4-Win32.zip

解答後、Cドライブ直下にフォルダ名をphpに変更してコピー

C:\phpフォルダの中を開いてphp5ts.dll をコピーして C\:windows もしくは C\:windows\system32にコピー

C:\php\php.ini-dist を C:\php\php.ini にコピーして編集する
変更箇所
include_path = ".;c:/php/includes;c:/php/pear"
extension_dir = c:\php\ext
extension=php_mbstring.dll のコメントは外しておく
*その他、php_mysql.dll など使用するdllファイルの先頭のコメントを外す

変更箇所
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = Shift_JIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

apache2の設定ファイル httpd.cond を編集
記述追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# For PHP 5 do something like this
LoadModule php5_module "c:/php/php5apache2.dll"
# configure the path to php.ini
PHPIniDir "C:/php"

Windowsの環境変数 Path に追加 ;C:\php;
Dosプロンプトから php -v コマンドでインストールするPHPのバージョンが表示されればOK

PEARをインストール
Dosプロンプトのまま 
cd C:\php\PEAR
php go-pear.phar
・・・・PEARのインストールが始まります 質問には基本的に全部EnterでOK

インストールが終われば普通にpear コマンドが使えます  例)pear install DB など

Apacheを再起動する
phpinfo();が表示できればOK

*Windowsの場合、IEではinfo.phpが表示されない場合もありますので
 そのときは他ブラウザでもお確かめください。
 

続きを読む "PHP5 インストール windows" »

2006年06月29日

PHP 5 インストール Linux

PHP 5の基本的なインストールです

Red Hat 9 ではコンパイル時にlibxml2のバージョンが古いというエラーがでたのでアップグレード
ftp://xmlsoft.org/libxml2/ で最新版を入手可能する

[root@localhost src]# chmod +x *.rpm
[root@localhost src]# rpm -Uvh libxml2-*
警告: libxml2-2.6.11-1.i386.rpm: V3 DSA signature: NOKEY, key ID de95bc1f
Preparing... ########################################### [100%]
1:libxml2 ########################################### [ 33%]
2:libxml2-devel ########################################### [ 67%]
3:libxml2-python ########################################### [100%]

tar xvzf php-5.1.4.tar.gz
cd php-5.1.4
./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-magic-quotes --with-xml --enable-mbregex --enable-mbstring --enable-zend-multibyte --with-mysql=/usr/local/mysql --with-pgsql=/usr/local/pgsql7.4.8 --enable-pear --with-zlib --with-gd --with-gettext --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib
make
make install

httpd.conf 記述確認
AddType application/x-httpd-php .php
LoadModule php5_module modules/libphp5.so
  *おそらく自動的に追加されるはず

iniファイル作成
cp php.ini-dist /usr/local/lib/php.ini

変更箇所
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = Shift_JIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

Apacheを再起動する
info.phpを作成してアクセスできればOK

PHP 5からPearが最初から組み込まれてるのがいいですね~

2006年06月28日

PHP 月末日取得

取得したい月の翌月の0日 で取得できる

前月の月末日取得の場合

$now_date = date("Ymd", time());
$date = substr($now_date,0,6);

$lastday = mktime(0,0,0,substr($date, 4, 2),0,substr($date, 0, 4));

echo date('y-m-d', $lastday);

2006年06月27日

PHP getdate()関数

getdate :日付に関する情報を連想配列

seconds ・・・ 秒
minutes ・・・ 分
hours ・・・ 時
mday ・・・ 日
wday ・・・ 数字の曜日、0:日曜日 1:月曜日 など
mon ・・・ 月
year ・・・ 年
yday ・・・ 1月1日からの日にち
weekday ・・・ テキストの曜日、"Sunday" など
month ・・・ テキストの月、"January" など
0 ・・・ 1970年1月1日からの秒数


$d = getdate();
print $d["year"] . "年" . $d["mon"] . "月" . $d["mday"] . "日" . "<br>\n";
foreach ($d as $key => $value) {
print "key => $key : value => $value<br>\n";
}

2006年6月27日

key => seconds : value => 10
key => minutes : value => 12
key => hours : value => 17
key => mday : value => 27
key => wday : value => 2
key => mon : value => 6
key => year : value => 2006
key => yday : value => 177
key => weekday : value => Tuesday
key => month : value => June
key => 0 : value => 1151395930

Array (
[seconds] => 10
[minutes] => 12
[hours] => 17
[mday] => 27
[wday] => 2
[mon] => 6
[year] => 2006
[yday] => 177
[weekday] => Tuesday
[month] => June
[0] => 1151395930
)

PHPでの日付取得

mktime関数を使った例

・本日日付
$date_today = mktime (0, 0, 0, date("m"), date("d"), date("y"));
echo date('y-m-d', $date_today);

06-06-27 という風に日付が取得できます

・昨日日付
$date_yesterday = $date_today - 86400;
echo date('y-m-d', $date_yesterday);

60x60x24 = 86400 で日数を調整します

・n日後
$date = $date_today + 86400 * n;

・n日前
$date = $date_today - 86400 * n;


2006年06月25日

Amazon 検索用モジュール

作ってみました!

ここをクリック!

Amazon, Yahoo, Google ではAPIが公開されてるから組み合わせ次第で面白いものが作れるかもしれませんな

WEB+DB PRESS vol.33




WEB+DB PRESS Vol.33

エンジニアの価値が決まる「構造化プログラミング」についての特集号です!
それとは別にライブドアのシステム構築の詳細な解説記事もあります。
実際に稼動している大規模システムの構築・運営ノウハウが公開されるなんてまずないですよ!

これを機にぜひ読んでみましょう。

WEB+DB PRESS Vol.33

2006年06月18日

Mac OSX でのPHP設定

OSXにはApacheとPHPはデフォでインストールされているそうです

コマンドパス:/usr/sbin/apachectl
設定ファイル:/ete/httpd/httpd.conf

LoadModule php4_module
AddModule mod_php4.c
この行のコメントをはずして有効にする

sudo /usr/sbin/apachectl start

Configure Command
'/SourceCache/apache_mod_php/apache_mod_php-17/php/configure' '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-apxs' '--with-ldap=/usr' '--with-kerberos=/usr' '--enable-cli' '--with-zlib-dir=/usr' '--enable-trans-sid' '--with-xml' '--enable-exif' '--enable-ftp' '--enable-mbstring' '--enable-mbregex' '--enable-dbx' '--enable-sockets' '--with-iodbc=/usr' '--with-curl=/usr' '--with-config-file-path=/etc' '--sysconfdir=/private/etc'

コンパイルオプションが渋いですね~

2006年06月13日

PHP checkbox FORM

checkbox の value が分かっていない場合の受け渡し
こんな風にすれば簡単ですね

<form action="check.php">
<input type="checkbox" name="fC[]" value="hoge"> hoge <br>
<input type="checkbox" name="fC[]" value="foo"> foo <br>
<input type="checkbox" name="fC[]" value="bar"> bar <br>
<input type="submit" value="OK">
</form>

check.php
<?php

// 配列 $fC に値が入っています。
// 添え字は 0 から連続で。
// 例えば、hoge と bar をチェックした場合は
// $fC[0] => "hoge" 、 $fC[1] => "bar" となります。

for( $i=0; $i<count($_POST['fC']); $i++ ) {
   print $i ." ::: " . $_POST['fC'][$i]. "<br>\n";
}
?>

Pear DB 更新

//PEARのDBクラス定義を読み込む
require_once('DB.php');

//config ファイルを読み込む
require_once('../config.php');

//接続
$con = DB::connect($dsn);

// 接続に失敗したらエラー表示して終了
if (DB::isError($db)) exit($db->getMessage());

//オートコミットセット
$con->autoCommit();

//sql文作成
$preSql = "INSERT INTO テーブル名 ( カラム名, カラム名 ) VALUES ( ?, ? )";

//プリコンパイル済みステートメント作成
$stmt = $con->prepare($preSql);

//バリュー設定
$data = array( 値, 値 );

//実行
$res = $con->execute($stmt,$data);

//コミット
$con->commit();

//これは本当に必要なのか?
$con->freePrepared($stmt);

//切断
$con->disConnect();

2006年06月12日

Nucleus ログイン機能を他画面で使う

Nucleus のユーザー機能を自作アプリケーションで使う場合のメモ

NUCLEUS_HOME/nucleus/libs/globalfunctions.phpがすべての動きを制御してる(はず)
この中の action パラメーターのvalueで画面の動きが振り分けられる

index.php は

// This file will generate and return the main page of the site
$CONF = array();
$CONF['Self'] = 'index.php';
include('./config.php');
selector();

これだけ
include('./config.php'); このコードでglobalfunctions.php他、lib以下のクラスを呼び出しているので
ログイン用PHPはconfig.php をコールしつつ
action でlogin を指定して ログインIDとパスワードを渡してやればOK
このあたりはHTMLのソースを見るしかない
基本的にパラメーターさえ分かれば画面の制御は勝手PHP側で可能

ちなみに自作したFORM先のログインPHPは

$CONF = array();
$CONF['Self'] = 'このPHPのファイル名';;
include('./config.php');
header("location: ログイン後の飛び先");
exit;

ログインした場合は echo $member->isLoggedIn(); で1が返る


2006年06月10日

PHP 4.x インストール

基本的なインストールメモ

http://www.php.net/get/php-4.3.11.tar.bz2/from/a/mirror からバイナリをダウンロード

tar -jxvf php-4.3.11.tar.bz2
cd php-4.3.11

PostgreSQL, MySQL に接続できるようにインストールディレクトリを指定しておく
./configure -with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-mysql=/usr/local/mysql --with-pgsql=/usr/local/pgsql
make
make install

httpd.conf 記述追加

DirectoryIndexにindex.php を追加
AddType application/x-httpd-php .php を追加
LoadModule php4_module modules/libphp4.so を追加

iniファイル作成
cp php.ini-dist /usr/local/lib/php.ini

変更箇所
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = Shift_JIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

Apacheを再起動する

info.phpを作成してアクセスできればOK
phpinfo();
?>

phpMyAdmin インストール

MySQLの管理ツール phpMyAdmin のインストールです

wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.8.0.4.tar.gz
tar xvzf phpMyAdmin-2.8.0.4.tar.gz
cd phpMyAdmin-2.8.0.4
cp libraries/config.default.php config.inc.php

config.inc.php を作成して下記3点の修正でOK
vi config.inc.php
$cfg['Servers'][$i]['host'] ='localhost' // MySQL hostname or IP address
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'password'; // MySQL password (only needed

ブラウザからアクセスできるようにすればすぐに使えます
$cfg['Servers'][$i]['auth_type'] = 'config';  のままBasic認証をかけて使っています

2006年06月03日

phpPgAdminインストール

PostgreSQLの管理をブラウザから行えるというツールです。PHPでできています。
http://phppgadmin.sourceforge.net/ ここから最新版をダウンロードします

展開後、phpPgAdmin-4.0.1conf/config.inc.php 編集
phpMyAdmin と違ってID,PASSを設定ファイルに書く必要はありません。
編集すべき点はわずか
$conf['servers'][0]['host'] = 'DBサーバーのIPアドレス';
$conf['extra_login_security'] = true;
 ID,PASSにroot,administrator,postgresなどありきたりなものを使っている場合は false にする

基本的にここだけでOKです サーバーにアップロード

例のごとくBasic認証をかけます
Alias /pgadmin/ "/usr/local/phpPgAdmin/"

Options -Indexes FollowSymLinks MultiViews Includes ExecCGI
AcceptPathInfo On
AllowOverride All
Allow from all


これで http://ホスト/pgadmin/ でアクセスできるようになります。

その後、htpasswd -c /usr/local/apache2/conf/.htpasswd ユーザー名
パスワード入力  でパスワードファイル作成
               *ユーザー名、パスワードは任意
/usr/local/phpPgAdmin/に .htaccess ファイル作成

touch .htaccess
vi .htaccess
【記述内容】
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
Require valid-user

chmod 666 /usr/local/apache2/conf/.htpasswd
/usr/local/apache2/bin/apachectl restart

これで認証がついたphpPgAdminが使えるはずです

2006年06月01日

php.ini 設定

変更箇所
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = Shift_JIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none

mbstringはこのようにしておくのがいいようです
IEでは正常でも他ブラウザで文字化けしてることあり
JavaみたいにStringオブジェクト単位で文字コードを設定して・・・というのはちょっと、、、

/usr/local/lib/php.ini として配置します

2006年05月31日

nucleusインストール

PHP, MySQLでできたnucleusというブログ
動きは軽快
ブログだけでなく、CMSとしても十分に使えます

これをロリポップサーバーへインストール

http://japan.nucleuscms.org/download.php
ここから最新版をダウンロードします
Nucleus CMS v3.23 の日本語版   nucleus3.23_ja_euc.zip

端末上で解凍後、アップロードします
NUCLEUS_HOME/config.phpのパーミッションを666へ
install.php, install.sql のパーミッションを755にします

そして install.php へブラウザからアクセス。

MySQLの設定を入力するだけでOK
ディレクトリのパスなんかは自動で認識されてます。
インストールボタンを押したら勝手にインストールが始まります。

終わったら install.php, install.sql を削除。
ブラウザから管理画面もしくはブログ画面へアクセス。

エラーがでるときは config.php のパーミッションを444にして再アクセス。

これでOK
ちなみに私のURLは http://drunk.chips.jp/nucleus/

*ソース内部を見るとSQLインジェクションを喰らってしまいそうなところが何箇所かあるんですが大丈夫でしょうか・・・


2006年05月30日

PHPでのファイルアップロード

アップロード画面HTML
ファイル名 pict でアップ
<html>
<body>
<form action="up.php" method="post" enctype="multipart/form-data" >
<input type="file" name="pict">
<input type="SUBMIT" VALUE=" OK ">
</form>
</body>
</html>

アップ用PHP  
<?php

if (is_uploaded_file($_FILES['pic_t1']['tmp_name'])){

copy($_FILES['pict']['tmp_name'], "aaa.jpg"); //サーバーに「aaa.jpg」の名前でコピーする
chmod('aaa.jpg',0777);

echo "<br>";
echo $_FILES['pic_t1']['name']; //クライアントマシンの元のファイル名
echo "<br>";
echo $_FILES['pic_t1']['type']; //アップロードされたファイルファイルのMIME型
echo "<br>";
echo $_FILES['pic_t1']['size']; //アップロードされたファイルのバイトサイズ
echo "<br>";
echo $_FILES['pic_t1']['tmp_name']; //サーバーにアップ後のテンポラリファイルの名前
echo "<br>";
echo $_FILES['pic_t1']['error']; //エラー

}
?>

2006年05月29日

Basic 認証

phpMyAdmin インストール
http://www.phpmyadmin.net/home_page/downloads.php
ここから最新版をダウンロードして
phpMyAdmin-2.8.0.4/libraries/config.default.php を
phpMyAdmin-2.8.0.4/config.inc.php にコピーして内部の変数を環境に合わせればOK

しかし phpMyAdmin-2.8.0.4 を Apache の DoccumentRoot以下にそのまま置くのはまずいでしょう

ですから/usr/local/にアップロード後、Aliasを作成後、Basic認証をかけておきました

httpd.conf に記述
Alias /phpmy/ "/usr/local/phpMyAdmin/"

これで http://ホスト/phpmy/ でアクセスできるようになります。

その後、htpasswd -c /usr/local/apache2/conf/.htpasswd ユーザー名
パスワード入力  でパスワードファイル作成
               *ユーザー名、パスワードは任意
/usr/local/phpMyAdmin/に .htaccess ファイル作成

touch .htaccess
vi .htaccess
【記述内容】
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
Require valid-user

chmod 666 /usr/local/apache2/conf/.htpasswd
/usr/local/apache2/bin/apachectl restart

これで認証がついたphpMyAdminが使えるはずです

Pear DB のエラー

PHP 4.3.10 MySQL - 3.23.58 でPear DB のアップデートをしたらなぜかMySQL DBに接続できなくなった

Fatal error: Call to undefined function: fetchrow() in ・・・

こんな風に

仕方がないから pear DB uninstall で削除後、再度インストール

./configure -with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-mysql=/usr/local/mysql --with-pgsql=/usr/local/pgsql7.4.6
make
make install


You may want to add: /usr/local/lib/php to your php.ini include_path
[PEAR] DB - installed: 1.6.2
[PEAR] HTTP - already installed: 1.4.0
[PEAR] Mail - already installed: 1.1.3
[PEAR] Net_SMTP - already installed: 1.2.6
[PEAR] Net_Socket - already installed: 1.0.1
[PEAR] XML_Parser - already installed: 1.0.1
[PEAR] XML_RPC - already installed: 1.1.0


よしよし、うまくいった
でもこんなのでいいのかな?

2006年05月28日

MapServerインストール手順

MapServerは、世界で最も使用されているマルチプラットホームのオープンソースWebGISです。
オリジナルは、1990年代中頃に米国ミネソタ大学とミネソタ天然資源局およびNASAとの共同プロジェクトであるForNetプロジェクト(森林資源管理)で開発され、現在はNASAがスポンサーであるTerraSIPプロジェクトから資金を得てミネソタ大学を中心に世界中の開発者(約20人)で開発が続けられおります。
MapServerはCGIベースのシステムであり、商用パッケージに比べて高機能なシステムではありませんが、通常の地図Webアプリケーションを開発するのに十分な機能をサポートしています。
例えば、ミネソタ天然資源局のHPや、カナダ政府の地図サイト(The Atlas of Canada)では、MapServerを使ってリクレーション、天然資源(森林、鉱物)、環境、社会、経済、歴史等の多彩な地図情報を公開しており、高トラフィックのアクセスに対しても高い信頼性が認められております。
その他、欧米を中心として世界の自治体、政府機関や民間での数多くの利用実績があります。

MapServerの公式HP http://MapServer.gis.umn.edu/

ミネソタ天然資源局のHP http://www.dnr.state.mn.us/maps/index.html

カナダ政府の地図サイト  http://atlas.gc.ca/site/english/index.html

続きを読む "MapServerインストール手順" »