PHP エラーメッセージ出力をやめる
Notice: Only variable references should be returned by reference in MDB/Common.php on line 415
こんなエラーメッセージを消したい場合、error_reporting(E_ALL);をコメントにする。
もしくはレベルを変えておく。
*Maple,Ethnaの場合
Notice: Only variable references should be returned by reference in MDB/Common.php on line 415
こんなエラーメッセージを消したい場合、error_reporting(E_ALL);をコメントにする。
もしくはレベルを変えておく。
*Maple,Ethnaの場合
前回の続き
$this->_tpl_vars[Smartyでの変数名] でPHPのほうへ渡せるようです
こんな風に
{foreach from=$action.tags|smarty:nodefaults item=tag}
{php}print urlencode($this->_tpl_vars['tag']);{/php}
{/foreach}
$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}
{$var|smarty:nodefaults}
こんな風にすれば回避できるようです
あんまり慣れてないのか未だにうまくいかないこともある
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}
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 と表示されればインストール成功
PHP Fatal error: Call to undefined function mb_language() in xxxx
こんなエラーがでたら
php.ini の extension=php_mbstring.dll を有効にします
php_mbstring.dll 内に mb_language の設定も含まれているそうです
AJAXをシンプルに使うライブラリがリリースされています。
05年末ごろにJavaのクラス内部のメソッドをJavaScriptで呼び出せるAPIがリリースされています。
PHPに限って言えばそんなことができるようです。
Sajax.phpを呼び出した後に関数を定義してやればJavascriptでコールできるようです。
詳しくはサンプルを参照
http://www.modernmethod.com/sajax/
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
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');
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();
}
電脳卸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] に商品情報が入っていますので echo $data[Details][$i][ProductName];
ページ単位での商品タイトルをデバッグするときは
for($i=0;$i
}
こんな感じでOKです。
配列をそのまま変数に入れてSmartyに落としてやるのがもっとも簡単なようです。
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 );
}
?>
プロジェクト: Kaede
概要
KaedeはMaple(https://sourceforge.jp/projects/maple/)から派生したWebアプリケーション・フレームワークです。 DIContainerを中心とした高い柔軟性と機能性の実現を目指して開発しています。
DIを重視しているところが特徴なのかな?
PHPのフレームワークではめずらしい
早速使ってみようw
・KoebiStudio Expr
PHP、HTMLの開発エディタであ
WEBサイト開発を協力に支援するオール
見た目はおしゃれでいい感じです
ただし・・・
PHP開発時にブレークポイントを指定して実行は可能か?現在、KoebiStudioにはブレークポイント(ステップ実行)や実行時の変数内容の表示など
デバッグに関する機能は実装されていません。
また、これらの機能の実装予定は未定となっています
JavaDocみたいにドキュメントを自動生成するツール
本家サイトは http://www.phpdoc.org/
インストール:pear install --alldeps phpdocumentor
タグの書き方は ここ
ドキュメント出力は -t でターゲット指定、-d で出力ディレクトリ指定
phpソースディレクトリまで移動して
phpdoc -t ./ -d ./ が楽
文字コード変換を忘れないように
$title = mb_convert_encoding( $subject,"ISO-2022-JP","EUC-JP");
$body = mb_convert_encoding( $msg,"ISO-2022-JP","SJIS");
こんな風に記述すること
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
PHP5 はインストールされているものとします
http://s2container.php5.seasar.org/ このページから S2Container-1.1.1.gz をダウンロード
コマンドプロンプトより pear install C:\download\S2Container-1.1.1.gz
のようにアーカイブまでフルパスで指定する
install ok !
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";
Windows XP + PHP5
php.ini 内の「extension=php_curl.dll」のコメントを外す
アーカイブ内のlibeay32.dll および ssleay32.dll を C:\WINDOWS\system32 フォルダにコピーする
$db = DB::connect($dsn);
if (DB::isError($db)) { die($db->getMessage()); }
この後に
「$db->query('SET NAMES ujis');」 でujis設定します
?charset=ujis では不十分でした
MySQL 5 にアップグレードするときは要注意
PHPフレームワーク Symfony インストール
pear でインストールします
pear channel-discover pear.phing.info
pear install phing/phing
pear channel-discover pear.symfony-project.com
pear install symfony/symfony
php.ini に記述追加
extension=php_pdo.dll
extension=php_sqlite.dll
「extension=php_pdo.dll」がデフォルトの記述にない場合があるので要注意
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);
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');
}
PHPでできたオープンソースのショッピングサイト構築ツールZenCartをインストールしてみました
公式ページより最新版アーカイブをダウンロードしてサーバーにアップロード後、
XOOPSのインストールのようにインストール画面に沿って進めます。
*ちなみにWORDファイルをHTMLで保存したものなので見にくいです
HTML_Ajax がまだ安定意版ではないようなのでバージョンを指定してインストール
pear install HTML_Ajax-0.4.1
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
順番どおりやらないとおこられるようです
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
フォームから受け取るデータは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
このパッケージを使うと、配列やオブジェクトのデータを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
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が表示されない場合もありますので
そのときは他ブラウザでもお確かめください。
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が最初から組み込まれてるのがいいですね~
取得したい月の翌月の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);
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
)
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;
エンジニアの価値が決まる「構造化プログラミング」についての特集号です!
それとは別にライブドアのシステム構築の詳細な解説記事もあります。
実際に稼動している大規模システムの構築・運営ノウハウが公開されるなんてまずないですよ!
これを機にぜひ読んでみましょう。
WEB+DB PRESS Vol.33
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'
コンパイルオプションが渋いですね~
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クラス定義を読み込む
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();
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が返る
基本的なインストールメモ
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();
?>
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認証をかけて使っています
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が使えるはずです
変更箇所
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 として配置します
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インジェクションを喰らってしまいそうなところが何箇所かあるんですが大丈夫でしょうか・・・
アップロード画面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']; //エラー
}
?>
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が使えるはずです
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
よしよし、うまくいった
でもこんなのでいいのかな?
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