既存PHPアプリケーションのサーバー移転に伴って、PHP5からPHP7にバージョンアップ。
そうしたらPHPExcelが動かないっぽいので、PHPExcelを最新の1.8に入れ替えた。
Excelファイルの出力には成功したのでほっとしたが、よく見たら罫線が正しく引けてない。
よく調べてみると、罫線の描き方が変わったらしい。
ということで、PHPExcelでの罫線設定方法。。
【旧バージョン】
$sheet->getStyle('X'.$row.':AB'.$row)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); //右線 $sheet->getStyle('X'.$row.':AB'.$row)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_HAIR); //左線 $sheet->getStyle('X'.$row.':AB'.$row)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_HAIR); //下線
【新バージョン(1.8以降)】
$borderStyle = array( 'borders' => array( 'left' => array('style' => PHPExcel_Style_Border::BORDER_HAIR), 'right' => array('style' => PHPExcel_Style_Border::BORDER_THIN), 'bottom' => array('style' => PHPExcel_Style_Border::BORDER_HAIR) ) ); $sheet->getStyle('X'.$row.':AB'.$row)->applyFromArray($borderStyle);
CentOS7にphpMyAdminをインストールしたんだが、forbiddenエラーに苦しむ。
/etc/httpd/conf.d/phpMyAdmin.conf の記述間違いかと思い、IPアドレスとか何度も確認したけど間違ってはいない。
結局、Apacheのバージョンが2.1から2.4に上がっていたのが原因らしい。
/etc/httpd/conf/httpd.conf
AllowOverride all Require all granted
新サービス向けに「さくらのレンタルサーバー」を契約することになった。
普通にスタンダードプランを月額515円で契約しても十分安いのだが、ふと隣のライトプランが目に止まった。なんと月額換算129円だ。
さくらのレンタルサーバー
安いけど、MySQLがない。これでは使えない。
いやまて、データベースはすでに運用しているさくらVPS上のMySQLを使えばいいじゃないか。レンタルサーバーはPHPアプリケーションをhttpsで使うためだけに契約するのだから。
というわけでさくらVPS上で稼働してるMySQLにリモート接続を許可させてみることにする。
#権限付与 (www9999は自分の環境に読み替えて) mysql> GRANT ALL ON DB_NAME.* TO user@www9999.sakura.ne.jp identified by 'パスワード' WITH GRANT OPTION; Query OK, 0 rows affected (0.62 sec) #権限変更を反映 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.02 sec) #ユーザー一覧表示 mysql> SELECT user,host FROM mysql.user; +--------+--------------+ | user | host | +--------+--------------+ | root | 127.0.0.1 | | user |www9999.sakura.ne.jp | | root | ::1 | | root | localhost | | user | localhost | +--------+--------------+ 5 rows in set (0.00 sec) #MySQLからログアウト mysql> exit Bye
上記設定してさくらのレンタルサーバー上からPHPでSQLを叩いてみると、無事アクセス成功。もうさくらのレンタルサーバーは案件ごとにライトプラン(年額1,543円)でいいじゃないか。
SQLServerからMySQLに、改行を含むデータを移行するために、SQLServerからCSVファイルを吐いたのだが、これが意図したようにMySQLに読み込まれない。
1つのフィールドに入るべき内容が、データ内の改行コード(CrLf)のせいで、CSV上で改行されてしまっている。
このファイルを読み込んだら、MySQLには1行毎に読み込まれて、意図しないデータになってしまった。
いろいろ解決法があるが、もっともシンプルな方法は、CSVを吐き出すときにセルをダブルクォーテーションで囲む(テキスト装飾子をつける)ことだ。
backup log DBNAME with no_log
go
DBCC SHRINKFILE(DBNAME_Log ,1)
go
SQLServerを使い続けるとトランザクションログがいっぱいになるので時々コマンドで消してやる。
mysql > load data local infile "/path/to.file.txt" into table `TBL_TABLENAME` fields terminated by ',';
予めFTPでサーバーにCSVファイルをアップロードしておいて、MySQLにコンソールからログインして上記コマンドを叩きます。CSVの1行目にフィールド名が入っているとそれもデータとして読み込まれてしまうので注意。
PHPでサーバー上にフォルダを作成する時、No such file or directoryエラーが発生。
今から作ろうとしているフォルダに対して「そんなフォルダ無いよ」と言われも。
原因は、mkdir()関数に渡す引数の不足。
2階層以上の深さを一度に作成するときには、第3引数にTRUEを付ける。
mkdir('./aaa', 0777);
これはOK。aaaフォルダを作るだけなので第3引数は省略可能。
mkdir('./aaa/bbb', 0777);
これで上記エラー発生。aaaフォルダを作成し、更にその下にbbbを作ろうとしている。
mkdir('./aaa/bbb', 0777, TRUE);
これで正常に作成できました。
メールクライアントを、15年近く使用したBecky!からMozilla Thunderbirdへ移行しました。
Becky!2のメールデータをCircle Beckyでエクスポートして、Thunderbird側でアドオン『MBoxImport』インポートします。
データ移行自体はエラーもなくすんなりいきましたが、Thunderbirdで見てみるとメールがほとんど移行出来ていません。
よく見ると、どうも古いメールが移行されていない模様。
解決方法
WordPressで突然「データベース接続エラー」が発生したときの対処法を自分メモ。
マルチサイト化して運用中のWPで、突然子サイトの1つだけエラー。
他のサイトは正常稼働していた。
原因はMySQLデータベース破損。
$ sudo mysqlcheck -u root -p wordpress_main --auto-repair
最後に
$ sudo service mysqld restart
Nginxのバーチャルドメインを設定していてエラーが発生したので、対処法を自分メモ。
/etc/nginx/conf.d/virtual.conf に下記を追記
server { listen 80; server_name domain1.com; access_log /home/demo/public_html/domain1.com/log/access.log; error_log /home/demo/public_html/domain1.com/log/error.log; location / { root /home/demo/public_html/domain1.com/public/; index index.html index.php; } }
/etc/init.d/nginx configtest を実行
nginx you should increase server_names_hash_bucket_size 32
エラー発生..
/etc/nginx/nginx.conf のhttpディレクティブに下記を追記
<code>http { server_names_hash_bucket_size 64; ... }
桶シスへのお問い合わせはこちら。