エリベリンデラボ

2010年3月11日

windowsにインストールしたapache2.2とphp5でcurlが使えないとき

カテゴリー: php, 開発環境 — タグ: , , , — elibelinde labs @ 11:49 このエントリーを含むはてなブックマーク

php_curl.dll CURL, Client URL Library 関数 libeay32.dll および ssleay32.dll が必要 (バンドル)

PHP: Windows 用 PHP 拡張モジュール – Manual
となっています。

注意: Win32 ユーザへの注意
このモジュールを Windows 環境で使用可能とするには、 libeay32.dll および ssleay32.dll が PATH の通った場所に存在する必要があります。 cURL のサイトにある libcurl.dll は不要です。

PHP: インストール手順 – Manual
とのことです。

apacheのphpinidirも
phpのextension_dirも
windowsのPATHも
正確でphp.iniのextension=php_curl.dllもコメントアウト削除してるのにphpinfo()でcurlがenabledにならず
Fatal error: Call to undefined function curl_init()
が発生する場合は
phpディレクトリの
libeay32.dll と ssleay32.dll
をwindowsのシステムフォルダ(xpなら c:\windows\system32)にコピーするとうまく行きました。

c:\phpにPATH通ってるのに何で動かないんだろうか・・・。

2010年3月8日

windowsSPにapache2.2とphp5.2入れる(追記)

カテゴリー: php, 開発環境 — elibelinde labs @ 16:18 このエントリーを含むはてなブックマーク

その後,別の環境にapache2.2 php5.1 mysql5.1 入れたときにつまづいたので追記。

phpがntsだとうまく動かない。
apacheのMPMとphpのコンパイル時の設定が合わない。

サーバログみると

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Pre-configuration failed

こんな感じです。
http://labs.unoh.net/2008/03/apache_mpm.html
http://yaguma.com/wordpress/?p=62
こちらなど参考。

php動く組み合わせは

http://httpd.apache.org/download.cgi#apache22
こちらの
windows binaryのnonssl or ssl どちらかと,

http://php.net/downloads.php
こちらの
単なる win32zip package
でokでした。

あと,もう1点つまづいたのが
apache起動時に
PHP Warning: PHP Startup: Unable to load dynamic library ‘c:\\php5\\ext\\php_pdo.dll’ – \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83v\x83\x8d\x83V\x81[\x83W\x83\x83\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘c:\\php5\\ext\\php_pdo_mysql.dll’ – \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r\n in Unknown on line 0
このようなmysql関連のモジュール見つかりません的なエラーが出て正常に起動しませんでした。
(サーバ自体は動く)

このエラーは
php\php5ts.dll
php\libmysql.dll
をWINDOWSのシステムフォルダにコピーしたら解決しました。
phpをインストーラ版でインストールしていたらこの作業は不必要かもしれません。

mysqlは上記とは特に関連なく,問題なく動作しました。

あと,忘れがちなのが
apache/conf/mime.types
の編集でした。

2010年2月18日

windowsXPにapache2.2とphp5.2とmysql5.1を入れた記録

カテゴリー: php, 開発環境 — タグ: , , — elibelinde labs @ 22:33 このエントリーを含むはてなブックマーク

apacheをダウンロードして解凍する

http://httpd.apache.org/

2.2.14のopensslのwin32用のmsi
をインストールする。
ディレクトリはc:\apacheにしました。

httpd.conf
mimy.type
を設定し,phpを使えるようにします。

[ httpd.conf ]

・document root を好みに
・開発環境なのでdoc_root を deny,allowでdeny from all して allow from 127.0.0.1とかにしておく
・使うモジュールを読み込む(rewirteなんかは初期状態だとコメントアウトされている)

LoadModule php5_module “C:\php\php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “c:\php”
の記述を忘れずに
・DirectoryIndexにindex.php追加
・AddHandler cgi-script .cgiのコメントアウト

[ mime.types ]

applicatioin/x-httpd-php php
applicatioin/x-httpd-php-source phps
を追加

php5.2のインストール

http://php.net/downloads.php
こちらからwindows用のバイナリをzipパッケージでダウンロードしました。
c:\phpに解凍しphp.iniを設定します。
真っ先に
extension_dir = “c:\php\ext”
そして
memory_limit
max_execution_time
を開発環境な感じに設定。

その後はmbstring関連。
extension=php_mbstring.dll コメントアウト外す

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = Off
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.detect_order = UTF-8,SJIS-win
mbstring.substitute_character = none;
このあたりはスクリプト側で設定するので全てコメントアウトでも問題ないですが。

最後にmysql5.1のインストール

http://dev.mysql.com/downloads/mysql/5.1.html
noninstall のwin32用のzipをダウンロードします。
c:\mysql5に解凍し,my.iniを設定します。

[mysqld]
basedir = “c:\mysql5\”
datadir = “c:\mysql5\data\”
default-character-set = utf8
[mysqldump]
default-character-set = utf8
skip-character-set-client-handshake
[mysql]
default-character-set = utf8
それぞれ追加

以上でインストールと設定ファイルのconfigが終わりました。

最後にmysqlのrootのパスワードを設定し,superuserを作っておきます。
mysqldが走っている状態で行います。

> mysqladmin -uroot password “aaaa”
いつも間違えるのが -password としてしまうこと。
あと “” は付けるかどうかもいつも迷ってしまいます。
> mysql -uroot -paaaa
> grant all prigileges on *.* to someone@localhost identified by “someword”

はまったポイント1

mysqldの起動

バイナリでインストールしたmysqlは
コマンドラインから
> mysqld –console
で起動できます。

/bin/mysqld.exeをダブルクリックしたりコンソール×押したりして
異常終了したプロセスが残っていると
InnoDB :: Operating system error number 32 in a file operation
こんなエラーが出ます。
タスクマネージャ>プロセス一覧に
mysqld.exe が複数あると思いますので
全部キルして再度
mysqld –consoleしてみてください。

cakePHPでFatal error: Call to undefined function: _()

カテゴリー: cakephp — elibelinde labs @ 21:11 このエントリーを含むはてなブックマーク

cakePHP1.2
php5
apache2.2
windowsXP

viewの_()関数が無いと言われました。
多言語対応のgettextで使われるgettext()のエイリアスだそうなので

php.iniの
extension=php_gettext.dll
のコメントアウトを外したら直りました。

vmwarePlayer3でゲストcentOS5とホストwindowsXP間フォルダ共有

カテゴリー: vmware — elibelinde labs @ 16:51 このエントリーを含むはてなブックマーク

まず,フォルダ共有は設定しただけでは使えません。
vmware tools をゲストOSにインストールする必要があります。

vmware tools をインストールするには

1.vmware Server(linux版)をダウンロードし,その中の
イメージファイルからインストール。
2.ゲストOSから直接インストーラをダウンロードし,インストール
http://blog.kumacchi.com/2010/01/vmware_player_30os_-.html
こちらに記述があったけど詳細は不明。

の2通りがあります。
1.の場合は

・vmwarePlayerのヘルプ
・こちら
http://animemo.seesaa.net/article/30556486.html

がとても分かりやすいです。

手順

1 vmware Server
VMware Server 2 for Linux Operating Systems
をダウンロードし,解凍(ファイル名はVMware-server-2.0.2-203138.i386.tar.gz でした)

2 解凍したフォルダの
/lib/isoimages/linux.iso

c:\linux.iso
にコピーしゲストOSのvmxファイルの
ディスクドライブで読み込めるよう記述

ide1:0.present = “TRUE”
ide1:0.fileName = “C:\linux.iso”
ide1:0.deviceType = “cdrom-image”

インストール時にイメージファイルを入れたところです。

3 ゲストOSにルートでログインし,
cdromをマウントしてイメージを解凍する

# mkdir /media/cdrom マウントするディレクトリを作成
# mount /dev/cdrom /media/cdrom マウントする
# cd /tmp 作業ディレクトリへ移動
# tar zxpf /mnt/cdrom/VMwareTools-x.x.x-yyyyyyy.tar.gz 解凍
# cd vmware-tools-distrib 解凍したフォルダへ移動
# ./vmware-install.pl インストーラ起動

~~しますけど?とかディレクトリ無いけど作って良いですか?とプロンプトで色々聞かれますので
私の場合は全てデフォルトで問題なかったので結果的にはEnter連打でOK。

最後に,

/etc/init.d/network stop
rmmod vmxnet
modprobe vmxnet
/etc/init.d/network start

これするか再起動してくださいと言われますので,します。
その後はゲストlinuxの

/mnt/hgfs に共有設定したフォルダが入っています。

xamppで開発していたcakePHPアプリがVmwareのcentOSで動くようになるまでのメモ

カテゴリー: cakephp, 開発環境 — タグ: , , , — elibelinde labs @ 00:22 このエントリーを含むはてなブックマーク

まずVmwarePlayer上のcentOS5でphpが動くようにしておきます。
httpサーバインストール時点では
Apache2.2
php5.1
mysql5.0
でした。

vsftpdをインストールし,ホストOSからftpでcakeをゲストOSのhttpdのドキュメントルートにアップロードします。
この時点で対象URLにアクセスすると画面は真っ白でした。

webrootに適当なファイルをアップしブラウザで確認すると内容が表示されるので,
mod_rewriteは問題なし。

なので,アパッチのエラーログを見ると,
cake/bootstrap.php
が見つからないとか,
cakeコアが見つからないとか,
faviconが見つからないとか吐き出されているので
cakeaplication/app/webroot/index.php
を開いて
ROOT
APP_DIR
CAKE_INCLUDE_PATH
を適切に修正しました。

これで,アプリ自体は動きだします。
とりあえず画面上でエラーが出るところまできました。

mb_convertなんちゃらが使えない。
とのことなので
yum install php-mbstring
で先へ進めました。

次は
json_decodeが使えない。
とのことなので
pecl install json
とか適当なことをやってみるが状況は変わらず。

調べると,json関係はphp5.2からコアに含まれるらしい。
とのことで
http://d.hatena.ne.jp/radioboo/20080307/1204876834
http://d.hatena.ne.jp/allspice/20080301
http://it.kndb.jp/entry/show/id/2463
こういった方法でyumを使ってcentOS5のphp5.1をphp5.2にupgradeする。

ここでようやく見覚えのある
cakephp developementな画面が現れます。

内容はmissing table
とのことなのでdbをインポートします。
と思ったらdatabaseさえ作っていなかったのでmysqlで
create database db_name

mysql -uuser -ppass db_name<デバッグで使っていたデータのダンプ.sql

以上でxamppの数百倍(体感)早い開発環境が手に入りました。
cake1.2のapp::importが遅いとか,rc2だけ遅いとか各所に書いてあるので色々試しましたが
結局はxamppとお別れすることになりました。

2010年2月17日

windowsXPsp3でVmwarePlayer にcentOS5をインストール

カテゴリー: 開発環境 — タグ: , — elibelinde labs @ 19:57 このエントリーを含むはてなブックマーク

急遽手元で開発環境が必要となり
Vmware Playerを試してみることに。

手順は

1 QemuでPC環境をエミュレートする
http://www.h7.dion.ne.jp/~qemu-win/
こちらからQemu on Windowsを入手し解凍。
cmdから使います。

2 centOSのインストールDVDのimageを入手
http://www.centos.org/
ここから辿って近場のミラーから落とします。
容量は3.7Gほどで20分くらいかかりました。
念のためsumチェックも。

3 VmwarePlayerをインストールし,1のファイルに2をインストール
まずVmware用のconfig fileを作成します。
書式は各所で手に入ります。

VmwarePlayerのダウンロードは
http://downloads.vmware.com/d/info/desktop_downloads/vmware_player/3_0
こちらから(会員登録が必要です)

3のファイルをダブルクリックしVmwareを起動するとcentOSのインストールが始まります。
あとはいつものセットアップ手順です。

つまづくのはネットワークの設定でしょうか。
ルータにDHCPついていたりする普通のネット環境ならcentOSのネットワーク設定は

IPv6は使わない
IPv4でIPアドレスは自動取得する

設定にし,あとはホストOS(windows)側のファイヤーウォールの顔色をうかがいましょう。

うまくゆかないときは設定を変えて再インストールしてみましょう。
HDDに入れるよりとっても手軽(気持ち的に)に行えます。

参考文献

centOSのインストール~初期設定

・GUI
http://www.db.is.kyushu-u.ac.jp/computer/linux/install.html

・CUI
http://centossrv.com/

・lamp構築
http://blog.paz-para.com/?p=1317

Linuxにソフトウェアをインストールする際にやってしまいがちな失敗10選 – IT業界を生き抜く秘密10箇条 – ZDNet Japan

2010年2月12日

cakephp初期設定_webroot/index.phpの設定

カテゴリー: cakephp — タグ: — elibelinde labs @ 21:54 このエントリーを含むはてなブックマーク

久しぶりにcakephpで新規案件。
懐かしいなと思いながらセットアップするもハマる。

$html->link()で作るURLに
/app が含まれてしまう。

$html->link(”TOP”,”/”);

http://domain.com/app
になってしまう。

$html->link(”新着”,”/pages/new”);
なんかも
http://domain.com/app/pages/new
になってしまう。
app
にも
その上にもお決まりの.htaccessがあるのでもちろん動作はするのですが
これなんとかしないと運用できません。

どう頑張っても
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=570&forum=7&post_id=1056
ここにたどり着いてしまう。

とりあえず分かったのは
$html->link

$this->base + url
を返すということと

$this->base

/app
になってしまっているのが原因だということ。

各地で
$this->base
を確認したり

.htaccess

Rewrite Base を意味ないよなと思いつついじって,結局意味ありませんでした。

最終的に,答えは
/webroot/index.php

設定でした。

http://cakephp.jp/doc/ch03s04.html
こちらに書いてありました。

ROOT には、あなたのapp フォルダを含むディレクトリのパスを設定してください。

APP_DIR には、あなたの app フォルダのパス名を設定してください。

CAKE_CORE_INCLUDE_PATH には、Cake ライブラリフォルダのパスを設定してください。

上の通りに設定することで解決しました。

cake と app と webroot を自由に配置したい場合で上手く行かないときは
上を確認してみてください。

2010年1月13日

フローチャート記法

カテゴリー: メモ — elibelinde labs @ 13:47 このエントリーを含むはてなブックマーク

記法の名称
NTT HCP: Hierarchical and ComPact description chart
日 立 PAD: Problem Analysis Diagram
日 電 SPD: Structured Programming Diagram
富士通 YAC: Yet Another Control chart
アメリカ(IBM) HIPO: Hierarchy plus Input Process Output
アメリカ NSチャート: Nassi Shnederman chart(Nassiらによる)
イギリス DSD: Design Structure Diagrams
ドイツ、オランダ PSD: Program Structure Diagrams(NSチャートと同じ)
フランス LCP: Logical Conception of Program flow chart

構造化チャートメモ
http://www.smg.co.jp/~toyo/Program/note.html

2009年12月18日

php型の比較表(と文字列の自動変換による判定の不具合)

カテゴリー: php — タグ: — elibelinde labs @ 12:35 このエントリーを含むはてなブックマーク

http://jp2.php.net/manual/ja/types.comparisons.php

今度時間のあるときにじっくり眺めてみるためのメモ。

~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・

時間はないけどじっくり眺める必要ができたので追記(09/12/19)

0 == “string”
がなぜtrueになるのか悩みました。

0 が 文字列に自動変換でも false
0 が bool(false) でも false
もちろん0 が 数値のまま でもfalse

なはずなのに,実際の処理では trueとして判定されます。

答えはこちらでした。

整数値を文字列と比較する際、文字列が 数値に変換されます。 数値形式の文字列を比較する場合、それは整数として比較されます。これらの ルールは、 switch 文にも適用されます。
http://www.php.net/manual/ja/language.operators.comparison.php

とのことでした。
0 が自動変換されているとばっかり思っていたのですが,文字列と整数型の比較では「文字列が数値」に変換されるそうです。
「”1″ が 1」 になったり 「”0” が 0」 になるのは感覚的に良く分かるのですが
「”その他の文字列”が 0 」になるというのはあらためて知っておくべきだと思いました。

最初は標題の比較票http://jp2.php.net/manual/ja/types.comparisons.php
の「0 == “php”」のtrue にどうしても納得が行かず( “文字列” は勝手には変換されないだろうと思い込んで )調べていたら「
比較演算子のページに上記がありましたのですっきりしました。

このおかげではまったのは

< ?php

$array = array(
  0=>array(
    array(
      "child_key"=>"child_val",
      "child_key2"=>"child_val2",

    )
  ),
  2=>array(
    array(
      "child_key"=>"child_val3",
      "child_key2"=>"child_val4",

    )
  ),
  3=>array(
    array(
      "child_key"=>"child_val5",
      "child_val2"=>"child_val6",

    )
  ),
);

?>

みたいな配列をforeachで順番に処理して最初のキーに決まった文字列が入ってくることがあるからその場合はじく

< ?php
foreach($array as $key => $val){

  if($key != "string"){//最初のキーが文字列の場合はじく ←ここの判定
      if($val[clild_key2] == "条件"){

        //処理 なんちゃら

        ~~~

        //処理 かんちゃら
      }
  }
}
?>

場合にキーが0である最初のループだけ文字列じゃないのに処理されなくて悩みました。

もう少し解説すると

「”string” != “string” で判定がfalse」
の場合のみ false を期待した処理でしたが

文字列以外のループでは
0 != 0(”string”が変換される) で判定がfalse
1 != 0(”string”が変換される) で判定がtrue
2 != 0(”string”が変換される) で判定がtrue
以下true

と,0 の場合も falseなのでifを通過しません。

基本的なことかもしれませんが,発見までしばらく各所でvar_dump地獄に陥りました。
switchでも同じことが起こるそうなので気づかないとはまるかもしれません。

ちなみに === と !== で型まで比較(というより自動変換をさせない)すれば当初の期待通りに動きます。
(0 !== “string” はtrue )
あとはdatatype で判定するのも手ですが,
配列のキーに必ず数値が来る保証がないので厳密な比較を行うのがちょっと不安といった心持があります。
(post処理をはさんだりすると)phpでは厳密なプログラミングをするのに工夫が必要な場があります。

まあ,ゆるいのが長所であり短所なのは周知のことですし,私もそんなphpが好きです。

古い投稿 »
CɂȂver.b2.0 ŐV̌tbcł܂

Powered by WordPress