昨日、home直下のユーザディレクトリで作業を行ない、
/home/user/vendorという状況でテストを行ったが
例えば、/ver/www/htmlの配下から
/home/user/vendorにリクエストをする際に、パーミッションエラーが起こり
phpのプログラムが止まってしまった。
autoload.phpが正しくrequireされているかを確認するのが、厄介だった。
また、home以下のディレクトリのパーミッションを流石にすべて777にしたくないので、
/ver/www/html側に
composerから再度PHPMailerを配置し、お茶を濁した。
2018/10/24
2018/10/23
メールの到達率を高める。 SPF逆引き対策
受付完了のメールなどを、社内のサーバから送信しているのだが、
セキュアな対策を行っているメールサーバを利用している方に、メールが届かない
というケースが生じてきた。
SPF(Sender Policy Framework) という技術だそうで、
FORMのIPアドレスがDNSの逆引きで実在するかをチェックするという動きのようだ。
わざわざレンタルサーバ上でメールを作成して送信も手間なので、
今までは、特段気にしていなかったが、基幹システム化しつつあるため、そうも言ってられなくなった。
要は、実在するSMTPサーバを経由してメールを送ればいいので、少し調べた所
いくつか方法があった。
1.
1.は設定変更等が生じた際に面倒な気がしてならないので、保留。
2.は魅力的だが、php7.0以降でサポートしていないようなので、後ろ髪惹かれつ第2候補に
というわけで、PHPMailerをインストールしてみる。
依存関係を考慮しつつライブラリを使えるようにしてくれる
composerという PHPのパッケージ管理システムを使って
PHPMailerを導入してみる。
セキュアな対策を行っているメールサーバを利用している方に、メールが届かない
というケースが生じてきた。
SPF(Sender Policy Framework) という技術だそうで、
FORMのIPアドレスがDNSの逆引きで実在するかをチェックするという動きのようだ。
わざわざレンタルサーバ上でメールを作成して送信も手間なので、
今までは、特段気にしていなかったが、基幹システム化しつつあるため、そうも言ってられなくなった。
要は、実在するSMTPサーバを経由してメールを送ればいいので、少し調べた所
いくつか方法があった。
1.
postfixのmain.cf にリレーさせる
2.Qdsmtpというhal456さんが作成したライブラリを利用させて頂き、smtpサーバ経由にする。
3.PHPMailerという老舗のライブラリを利用させて頂きsmtpサーバを経由にする。
1.は設定変更等が生じた際に面倒な気がしてならないので、保留。
2.は魅力的だが、php7.0以降でサポートしていないようなので、後ろ髪惹かれつ第2候補に
というわけで、PHPMailerをインストールしてみる。
依存関係を考慮しつつライブラリを使えるようにしてくれる
composerという PHPのパッケージ管理システムを使って
PHPMailerを導入してみる。
# mkdir comp 適当な作業ディレクトリを作成。
# cd comp
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php composer-setup.php
All settings correct for using Composer
Downloading...
Composer (version 1.7.2) successfully installed to: /root/composer.phar
Use it: php composer.phar
# rm -f composer-setup.php もう要らないので、消す
# mv composer.phar /usr/local/bin/composer システム全般で使えるように移動
セキュリティホールになるからルートで使うなと言われるらしいので、 一般ユーザで確認
$ composer
でロゴとか出れば、OK
続けて、ライブラリ
phpmailer
を入れる。
任意のユーザの任意のディレクトリで行うこと
$ composer require phpmailer/phpmailer
Using version ^5.2 for phpmailer/phpmailer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing phpmailer/phpmailer (v5.2.26): Downloading (100%)
phpmailer/phpmailer suggests installing league/oauth2-google (Needed for Google XOAUTH2 authentication)
Writing lock file
Generating autoload files
何処に置いたか忘れたら、これで探すようかな?
$ find -name vendor -type d
smtp送信テストPHP<?
require_once("/置いた所/vendor/autoload.php" ); //これを忘れると動かない!! require_once("/置いた所/vendor/phpmailer/phpmailer/class.phpmailer.php"); //これを忘れると動かない!!
mb_language("japanese");
mb_internal_encoding("UTF-8");
$to = "XXXX@gmail.com"; $subject = "SMTP587テスト"; $body = "smtpサーバ経由のメールテスト";
$from = "hoge@hogehoge.com"; $fromname = "送信テスト君"; $mail = new PHPMailer();//インスタンス生成 $mail->CharSet = "iso-2022-jp"; $mail->Encoding = "7bit"; $mail->IsSMTP(); //smtp利用宣言 $mail->SMTPAuth = TRUE;//smtp認証宣言 $mail->Host = 'mail.xxxx.jp:587'; // ホストアドレス:ポート25or587 $mail->Username = 'hoge'; //smtp認証ユーザ $mail->Password = 'hogehoge'; //smtp認証パス $mail->AddAddress($to);
$mail->From = $from; $mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","UTF-8"));
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $mail->Body = mb_convert_encoding($body,"JIS","UTF-8"); //メールを送信 if (!$mail->Send()){ echo("Failed to send mail. Error:".$mail->ErrorInfo); }else{ echo("Send mail OK."); }
?>
テスト送信が届いたら、
念のため、SMTPサーバの/var/log/maillog も確認し、上手くいってるようだ。
稼働中のプログラムの置き換えをして完了。
明日できれば置き換えよう
うん、がんばろう・・・。
2018/10/10
tesseractの数字と一部の記号のみ識字させる方法
https://code-examples.net/ja/q/4b73be
此処に記載があった。
outputbase digits のオプションでは、何故か上手く行かなかったので、
此処に記載があった。
outputbase digits のオプションでは、何故か上手く行かなかったので、
少し調べてみたところ
標準出力にオプションでキャラクタの設定が出来るとあった。
標準出力にオプションでキャラクタの設定が出来るとあった。
stdout -c tessedit_char_whitelist=指定したい内容
これは上手くいったので、一旦標準出力させたものを無理やりファイル出力させた。
正規の方法は、学習させることだと思うが、
数字とハイフンのみ識別させればよかったので、この方法を採った。
数字の認識のみさせるであれば余程特殊なフォントでなければ、かなりの精度で認識した。
ファイル出力する場合
$ tesseract test.png stdout -c tessedit_char_whitelist=0123456789- >test.txt
ファイル出力する場合
$ tesseract test.png stdout -c tessedit_char_whitelist=0123456789- >test.txt
このようにすると良い。
デフォルトのライブラリを通すと、~や#に誤認識することが有り、
上手くなかったので、探してみたところ有益な情報が見つかったので、オボエガキ
登録:
投稿 (Atom)