PHPExcel1.8以降での罫線の設定方法


既存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エラー発生時の対処法


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

MySQLにリモート接続を許可させる


新サービス向けに「さくらのレンタルサーバー」を契約することになった。
普通にスタンダードプランを月額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からMySQLに、改行を含むデータを移行するために、SQLServerからCSVファイルを吐いたのだが、これが意図したようにMySQLに読み込まれない。

名称未設定-2

1つのフィールドに入るべき内容が、データ内の改行コード(CrLf)のせいで、CSV上で改行されてしまっている。
このファイルを読み込んだら、MySQLには1行毎に読み込まれて、意図しないデータになってしまった。

名称未設定-1

いろいろ解決法があるが、もっともシンプルな方法は、CSVを吐き出すときにセルをダブルクォーテーションで囲む(テキスト装飾子をつける)ことだ。

SQL Serverのログファイルをクリアするコマンド


backup log DBNAME with no_log
go
DBCC SHRINKFILE(DBNAME_Log ,1)
go

SQLServerを使い続けるとトランザクションログがいっぱいになるので時々コマンドで消してやる。

phpmyadminからインポートできない大きなCSVをコマンドラインでインポートする


mysql > load data local infile "/path/to.file.txt" into table `TBL_TABLENAME` fields terminated by ',';

予めFTPでサーバーにCSVファイルをアップロードしておいて、MySQLにコンソールからログインして上記コマンドを叩きます。CSVの1行目にフィールド名が入っているとそれもデータとして読み込まれてしまうので注意。

mkdirでフォルダを作成するとNo such file or directoryエラーが発生する


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);

これで正常に作成できました。

Thunderbirdでメールが勝手に消える件(解決)


メールクライアントを、15年近く使用したBecky!からMozilla Thunderbirdへ移行しました。

Becky!2のメールデータをCircle Beckyでエクスポートして、Thunderbird側でアドオン『MBoxImport』インポートします。
データ移行自体はエラーもなくすんなりいきましたが、Thunderbirdで見てみるとメールがほとんど移行出来ていません。
よく見ると、どうも古いメールが移行されていない模様。

解決方法

  1. 各フォルダを右クリック→プロパティをクリック
  2. フォルダのプロパティの「アカウント設定に従うのチェックを外す」「メッセージを自動削除しないをクリック」

 

名称未設定-1 名称未設定-2

WordPressで突然「データベース接続エラー」が発生


WordPressで突然「データベース接続エラー」が発生したときの対処法を自分メモ。
マルチサイト化して運用中のWPで、突然子サイトの1つだけエラー。
他のサイトは正常稼働していた。

原因はMySQLデータベース破損。

$ sudo mysqlcheck -u root -p wordpress_main --auto-repair

最後に

$ sudo service mysqld restart

Nginxのバーチャルドメインでエラー


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;
    ...
}

お問い合わせ

桶シスへのお問い合わせはこちら。

Close