Midnightjapan

PHP

PHP5 PEAR:SMTP送信について

by jun on 10月.27, 2016, under PHP, Programing

PHPのバージョンを5.6.8にバージョンアップしたためPEARライブラリもアップデートしました。
すると突然、こんなエラーが。

pear mail authentication failure [SMTP: STARTTLS failed (code: 220, response: ready for tls)]

なにも変更していないんだが・・・・。
pearとmailライブライをあさってみたがなかなかいい情報がなく、TLSで探してみるとありました。

http://osticket.com/forum/discussion/3422/failed-to-configure-email-smtp-settings

どうもPHP5.1.0以上はTLS必須にしているらしいです。
なるほど、というわけで
PEAR>Net>SMTP.php
私の場合は463行目(pearのバージョンによると思います)

if (version_compare(PHP_VERSION, '5.1.0', '>=') && isset($this->_esmtp['STARTTLS'])) {
if (PEAR::isError($result = $this->_put('STARTTLS'))) {
↓
if (version_compare(PHP_VERSION, '6.1.0', '>=') && isset($this->_esmtp['STARTTLS'])) {
if (PEAR::isError($result = $this->_put('STARTTLS'))) {

こんな風に直してやったらちゃんと動作しました。
めでたしめでたし。

コメントなし more...

PHPオブジェクト指向プログラミング おすすめ本・参考本

by jun on 12月.05, 2012, under PHP, Programing, 未分類

いままではPHPでの開発もソースの互換性をとりver4まででした。
関数は使っても一人で開発をおこなってきたため、クラス化してパーツを使いまわすための時間がもったいなく、ソースを管理してコピペのほうが便利でした。
しかし複数でのプロジェクト開発、オブジェクト指向開発、MVCモデル設計、データベースのORM(Object-Relational Mapping)化などなど、もっと高度な事を学ばなければ人柱にはなれない。
というか、その決断はあまりにも遅すぎた。
すでに自分の年齢も考えると、女のケツを追いかけている場合ではなかった。
もっと早くやるべきだったと後悔もしたが、私の辞書に不可能はない。
今からでもやってやる。と、思い下記の本を購入読破。現在現場でOJT(On The Job-training)中である。

自宅での環境構築しながら徐々にレビューしていきます。

オープンソース徹底活用 Zend FrameworkによるWebアプリケーション開発

他のZendFrameworkの本は読んでいないが、ZendFrameworkだけでのMVCモデル構築ならかなり詳しく書いてあります。実際に構築しながら学んでいくタイプの本です。

PHPによるデザインパターン入門

GoF(Gang Of Four)デザインパターンをPHPでわかりやすく説明されてあります。PHPを習熟してきたらぜひおすすめしたい本です。デザインパターンの利点や欠点もよくわかります。

パーフェクトPHP (PERFECT SERIES 3)

PHPのラーニングにはあまり向かないかもしれません。少しわかる人向けにまさにパーフェクトな理解を深めたいなら、なるほどすばらしい一冊です。

オブジェクト指向でなぜつくるのか 第2版 知っておきたいOOP、設計、関数型言語の基礎知識

オブジェクト指向がわかったら、自分で設計しないといけません。そうです、いずれは自分で書けるようにならないといけないのでオブジェクト指向のために必要な用語や解説されている本があると理解度は違います。

Smarty入門PHP

ZendFramework、タ、ア、ヌ、祟VC、マケステロ、ヌ、ュ、゛、ケ。」、キ、ォ、キ・オ。シ・ミ。シ、ホ・皈筵熙ヒ、讀ネ、熙ャ、「、ハ、餞marty、ホ、ロ、ヲ、ャニーコ釥ャキレイ任錣㎠蠅笋垢盖’修覆里如▲皀妊襪肇灰鵐肇蹇璽蕕椀HPでZendFrameworkを使ビューはSmartyを使う。こうすることでHTMLコードはデザイナーさんでも製作可能なMVC環境でプロジェクト開発が可能となります。非常に簡単なので数日で理解できると思います。

Subversion実践入門

プロジェクト開発では切っても切れないバージョン管理システム「Subversion」まったく初心者向けではなく、ある程度わかる人が実際のプロジェクト開発の現場でどのように構築したらいいのかの参考書です。Subversionをわかろうとしたらもっと図解入りの本がいいでしょう。私は図解入りの本を立ち読みして、この本を買って読破しました。

コメントなし :, , , , , , , , , more...

Midnightjapanサイトをスマフォ表示対応完了!

by jun on 11月.09, 2011, under Android, Android, Blog, iPhone, PHP, Programing, WEB

細かなチェックが終わっていませんが、かねてよりスマフォから見に行ってフルブラウズするのは重たいし、なんとかしたいなぁと思っていました。

キャリアごとにテーマを選択できるタイプのプラグインを導入することで対応完了しました!

「利用したWordpressプラグイン」

WPtap Mobile Detector v1.1

これにより各端末ごとにテーマを振り分けが可能になります。

「利用したテーマ」

Smooci2 = iPhone

Foghorn = Android

スマフォでは記事をできるだけ読みやすくしてみました。

とくに難しい設定なく完了しました。

「対応端末」

iPhone/iPod、?iPad、Android、BlackBerry Storm、Nokia、Opera、Palm、Windows Smartphone、Blackberry

それと、こっそりiPhoneも購入しました・・・

敵を知るにはやはり・・・といういいわけでどうっすか?w

($・・)/~~

コメントなし :, , more...

未知の実行時エラーです。IE8

by jun on 8月.02, 2011, under PHP, Programing, WEB

いつものIEの独自判断と思って、原因究明をしました。
じつは、ほかでもこのエラーがでていたので、ちょっと記事に残しておきます。

私が発生した問題。

1)「未知の実行時エラーです。」prototype.js

まだまだ未熟なAjax使いのとしては、稚拙なコード形態のせいで、この問題がjavascript側の問題なのか、ターゲットになるHTMLを処理しているPHP側なのかの判断が難しく戸惑いました。結果はこうです。

このコードの問題はブラウザの描画可能横幅と高さを取得したく

var WindowTakasa= window.innerHeight;

としたところ、どうもIEではこれでは値が取得できない。

その後の計算で、IE8では「Undefine」値を処理できず、止まってしまうようなんですね。
IE9では値の取得も、処理も継続してくれました。

ブラウザ判定で条件分岐してIEの場合は

var WindowTakasa = document.documentElement.clientHeight;

として、そのほかのブラウズでは従来通り

var WindowTakasa= window.innerHeight;

として、問題は解決しました。どこが未知の実行時エラーなんでしょうか?IEの判断力が私より稚拙ということですね。

 

2)未知の実行時エラーです。 server.php

これは「HTML_AJAX」というAJAXツールです。こんなものに頼らなければよかった。もしかしたらPrototypeも別で組み込んでいるので、その辺の問題なのかもしれません。本来はその辺のブラウザ互換もやってのけてくれるのがこのツールのいいところなんですが、Prototypeの命令を覚えてくると、似たような言葉で覚えるのが面倒なものが多いです。

これは、独自のプルダウンメニューを表示する機能を作成をしようと、Prototype.jsにより、<div>の中をHTML_AJAX.replace( ‘ID’ , PHPprogram);として、書き換える処理を行っていました。

最初はjavascript側のスコープか、なにかIEの独自違反を疑っていましたが、皆目見当がつかず、2~3時間が経過。

全面的に古いバージョンを戻したら動きました。

どう見比べても、???せめて増やしたのがこの<div>の中に<form>を追加したこと。それが、本人もなぜここに<form>を追加したのかわかりません。

どうも<form>の中に<form>を宣言していたらしく、innerHTMLで<table>の中身を書き換えようとすると読み込み専用となり、同じように未知の実行エラーと表示されるようなので、犯人はこれのようです。

Ajaxで読み込まれるPHPプログラムがわを変更し<form>を削除。

下記のようなときに問題がおきました。

<form name=”A”>

<input type=”button” ?onClick=”MenuOpen(‘open’);”> Ajax実行

<div id=”PullDownMenu”></div>     ←Ajax実行結果をここに書き換えたときに<form></form>をいれてしまった。

</form>

ということです。

この明確な範囲違反を未知の実行時エラーとするIE・・・やっぱり俺より稚拙なのか?w

どうかみなさんが、私のようにつまらないところで、つまづきませんようjに。

コメントなし :, , , , , more...

Heartbeat の安全な停止方法

by jun on 7月.26, 2011, under Linux, Mysql, PHP, Programing

1号機(プライマリー) 2号機(セカンダリー)として稼働中のDRBD+Heartbeat(HAクラスタシステム)を構築している。
これを安全に停止するための自己記録である。

まず2号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat stop

これで、2号機が停止したら1号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat stop

※ 深夜の気が向いたときしかやりたくないので、ついここで、rootにならずにやって、サブシステムがロックしているとか、よくわからないエラーがでてしまい、余計な時間がかかることがあるが、rootになっていれば問題はおきるわけがない。

つづいて、[Heartbeat]がとまったことでDRBDもこのようになっている。

[管理者@1号機] # /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                   ds                 p  mounted  fstype
0:r0   Connected  Secondary/Secondary  UpToDate/UpToDate  C

そこでこのようにプライマリーにしてマウントする

[管理者@1号機] # drbdadm primary all
[root@winsor ~]# /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C
[管理者@1号機] # mount /dev/drbd0 /マウントしたいパス

これで安全に停止してメンテナンスが可能です。

ささ、MySQLのバックアップやディスク容量の増加など完了しました。
今度はちゃんと元にもどしましょう。

まず1号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat start

つぎに2号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat start

そしたらあわてずに待つ。
1号機2号機どちらでもかまわないが[Heartbeat]のステータスを表示する。
一応プライマリーの1号機でみてみることにする。

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: NONE
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): OFFLINE
Node: 2号機.lan (***********************************************): OFFLINE

じっくりね。結構この状態が続いて、あせることがあるかもしれないけど、あわてない。
そして1分から2分後

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: 1号機.lan (***********************************************)
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): online
Node: 2号機.lan (***********************************************): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started 1号機.lan
    MailTo_2    (heartbeat::ocf:MailTo):        Started 1号機.lan
    drbddisk_3  (heartbeat:drbddisk):   Started 1号機.lan
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started 1号機.lan
    httpd_5     (lsb:httpd):    Started 1号機.lan
    mysqld_6    (lsb:mysqld):   Started 1号機.lan

ふぅ、一安心。たまにしかやらないから、余計ね。ご苦労様でした _(._.)_

コメントなし :, , more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!