2011年5月27日金曜日

PHPでPDFを生成【mPDF】

PHPやHTMLで作成されたWEBページなどをそのままPDFヘ出力してくれる
便利なライブラリを発見(古い?)

まぁあまりPDF出力とか使ってなかったからね・・・・
調べもしてなかった

まぁ調べてると色々と有るみたいですが、私が気に入ったのは「mPDF」
これは便利だと思って、早速インストールしてみたが
最新版mpdf51は、どうも日本語対応してないのか文字化けする。

色々と調べたら「CJK Lang....(ry」ってのをDLして公式に「unifont」ディレクトリに入れろって書いてるが、mpdf51に「unifont」なんてディレクトリないしw

メンドクセ・・・・
色々と調べると、mpdf4xには「unifont」あった。
とりあえずこれで動かすかと思ってやった見たら、日本語奇麗に表示された。
しかし、なぜか画像が表示されない。

うーーーん・・・
と思ったら、見え難かったんだけど、「mPDF5.0」ってのがあった
どうも、これが日本語フォントとかもとりあえずサポート?してるっぽい。

早速使ってみたら
なんとも!イメージ通り表示された!!

おぉ〜ソースコードも奇麗になるし、たった5行6行でPDF出力
凄過ぎるぜ!!

とあるブログを見ると
$mpdf = new mPDF('UTF-8','A4');
と書いてあったが、これは間違い。
$mpdf = new mPDF('ja','A4');
こうしないと、日本語が文字化けしますので、後者が正解。

そして、ダウンロードするのであれば「mPDF v5.0」をDLしてやってください。
http://www.mpdf1.com/mpdf/download
ここからDLできるよん。

2011年5月22日日曜日

maximum execution time of 30 seconds exceeded php.iniの設定変更

php.iniのmax_execution_timeの設定がデフォルト30となっている。
これは30秒以上かかると、自動的にタイムアウトするって設定らしい。


なので、php.iniのmax_execution_timeの設定を60などと大きくすると
結構な量のデータを処理できる。


ブラウザ側でのタイムアウトの設定もあるみたいなので
大きいからといって、処理できるわけでもないみたい。


そういう時は、「ブラウザ タイムアウト 設定」などで検索するといろいろと出てきます。
IEの場合だとレジストリを触らないとだめみたいですね。


まぁ60とか180くらいならぜんぜんいけるのかな・・・

2011年5月19日木曜日

MySqlを外部接続するための設定

今更な気もしますが、忘れっぽいので・・・・

A.com と B.comがあって
A.comを外部データベースサーバーとして使用する。
B.comはA.comからのデータを取得して閲覧のみ。

A.comのmy.confの中にある
bind-address=127.0.0.1をコメントにする
↓↓↓↓↓↓↓↓↓↓
# bind-address = 12.0.0.1
(bind-addressは外部からの接続を許可しない時に使用します。)

次に、A.comにssh接続する
(phpMyAdminの特権ところでも確認やSQL文を発行して追加する事はできますがROOT権が無かったらエラーになるので、今回はターミナルなどのソフトでSSH接続で行います。)

ssh接続完了したら
mySqlへ移動します
> mysql -u root -p

mysql > となったらOK
次に、GRANTで発行する。

mysql> GRANT ALL PRIVILEGES ON *.* TO user@'%' IDENTIFIED BY '任意のパスワード';


「*.*」だと、全部のテーブルを見れる設定になってしまうので
「TABLE_NAME.*」とすると、見れるテーブルを指定できます。
「user@%」になっている「%」の所を外部のIPアドレスにする事で、指定されたIPからしか接続出来ない様にする。(セキュリティ強化の為)
「user」となってる所は接続用のUSER名かな?(ここらへん解らん)

あまり、私も詳しく理解してないので自己責任でお願いします。

上記QUERYを発行して、OKだったら

Query OK, 0 rows affected (0.00 sec)
でます。エラーだと何らかのエラー文が出ると思います。
あとは接続ですが


$hostname = ホストのIPアドレス;
$database = TABLE_NAME;
$dbuser = 設定したuser名;
$dbpass = 設定したパスワード;

$con = mysql_connect($hostname, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($database,$con) or die(mysql_error()); 
PHPで書くとこんな感じだとおもいますが

これで、接続できたらOKですね。

2011年5月15日日曜日

CKeditorを画像ファイルアップロード可能にする方法

以前から、色々と重宝してるCKEditorですが
デフォルトでは、画像のリンクは出来ますが、画像のファイルアップローダーは付いてないってことで

外部プラグイン「CKfinder」を利用します。
色々と調べると、有料版とか有償版とか書かれてるのですが
たぶん無料で使えます。
ただこんなコメント出てますので意味不明です(笑
「This is the DEMO version of CKFinder. Please visit the CKFinder web site to obtain a valid license.」
まぁとりあえず使えるならDEMOバージョンだろうがどーだっていい。

ってことで,設定を。

まずはCKfinderをDL
最新の物が良いかもしれないですね。

DLしたら、ファイルをサーバーへアップロード(好きな所へ)
アップロードしたら、CKfinderの中の
config.phpを触ります。

33行目のreturn false;をreturn true;へ変更
63行目の$baseUrl = '/user/userfile/'; を 好きなURLヘ変更します。
63行目で書いた場所が画像のアップロード先になります。
これで設定はほぼ完了。簡単。

config.jsの中の
language = "fr"とかってなってるコメントされてるところを
jaとして、コメントはずしてもOK
ちなみに、今回は触りませんが、ここでスキンの設定も出来そうですね。

次は参照元(先)を追加します。
<script type="text/javascript" src="/参照元/ckfinder/ckfinder.js"></script>

次に、今まで使っていたCKeditorですが
CKfinderを入れる前はたぶんこんな感じになってるのかな
<textarea id="ckeditor" class="ckeditor" name="details"></textarea>

これを変更せずに

<script type="text/javascript">
// This is a check for the CKEditor class. If not defined, the paths must be checked.
if ( typeof CKEDITOR == 'undefined' ){
//CKエディタが見つからん時の処理
}else{
var editor = CKEDITOR.replace( 'ckeditor' );
CKFinder.setupCKEditor( editor, '/参照元/ckfinder/' );
 ) ;
}
</script>

とします。


とまぁこれで、設定完了です。
超簡単でした。