PHPExcel 読み込んだテンプレートを上書きした時にエラーになる問題の対処方法
テンプレートのExcelをコピーしてからデータを登録後、上書きしたら下記のようにエラーになった。
Error: File zip:///app/files/template.xlsx#xl/media/image.png does not exist #0 /app/Vendor/Excel/Classes/PHPExcel/Writer/Excel2007/ContentTypes.php(181): PHPExcel_Writer_Excel2007_ContentTypes->_getImageMimeType('zip:///app...') #1 /app/Vendor/Excel/Classes/PHPExcel/Writer/Excel2007.php(246): PHPExcel_Writer_Excel2007_ContentTypes->writeContentTypes(Object(PHPExcel), true)
Googleで以下のサイトがヒット。 stackoverflow.com
PHPExcel のバグとのことで、 235-237行目をコメントアウトもしくは削除をすれば問題なく保存できるようになりました。
app/Vendor/Excel/Classes/PHPExcel/Writer/Excel2007.php
235 if (file_exists($pFilename)) { 236 unlink($pFilename); 237 }
CSV文字化けした時はBOMも確認する
複数の環境に設置してるシステムで、ある環境だけCSVダウンロードが文字化けしてしまう現象がおきました。
コードを調べたところ特におかしなところが見当たらず、調査を進めていくとファイルにBOMが付与されていると文字化けになると言う情報を発見。
「php csv ソ」で検索して1番目に以下の情報を発見。 ダウンロードしたCSVファイルが文字化けする問題 – 大阪のシステム開発・WEBシステム開発会社技術担当スタッフの覚書き、子だぬきの技術習得ノート
最初は関連するファイルを一つずつ調べていたのですが、数ファイルみたところで、一括で調べられないかを調査してみることに。
「php bom 一括 確認」で検索したところ何種類かあったのですが、bash で検索できる方法が簡単でした。
このコマンドで特定のファイルだけ抽出してくれます。
find . -name '*.php' | xargs grep -l ^$'\xef\xbb\xbf'
参考にしたのはこちら Mac(bash)でBOM付きファイルを抽出しBOMを削除するコマンド | KEYPOINT – キー・ポイント株式会社 開発日誌
今回はBOMがついているファイルが1つだけだったので手動で削除しました。
複数ある場合は参考サイトに一括削除の方法が載っています。
MailCatcher が気付いたら動かなくなってたので入れ直した。
最近は mailtrap を使っているので、MailCatcher は使わなくなってたのですが、 php.ini の sendmail に直接設定して使いたい案件がでてきたので久しぶりに MailCatcher を使おうとしたら動かなくなってた。
以前入れて動いてたので、普通に mailcatcher を呼んだところ、そんなコマンドないと言われてしまう。
$ mailcatcher zsh: command not found: mailcatcher
パスが通らなくなったのかと検索してみるもでてこない。 ってかファイル数多すぎのかなかなか終わらないので途中で止めた…。
$ sudo find / -name mailcatcher ^C
ないのなら入れてやろうとインストールしてみたところエラー。
$ sudo gem install mailcatcher Building native extensions. This could take a while... ERROR: Error installing mailcatcher: ERROR: Failed to build gem native extension. current directory: /Library/Ruby/Gems/2.0.0/gems/eventmachine-1.0.9.1/ext /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20170925-22868-1pumnwa.rb extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/include/ruby.h extconf failed, exit code 1 Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/eventmachine-1.0.9.1 for inspection. Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-16/2.0.0/eventmachine-1.0.9.1/gem_make.out
とりあえず、El Capitan になった際に rootless という概念ができたという情報があるが、 rbenv 使っていれば問題ないとあったのとエラーメッセージから違うかなっとスルー。
調べてみるもこれっていうのがでてこないので、 ruby から入れ直してみようかと、一番新しいバージョンをインストール!
$ rbenv install 2.3.1 Downloading ruby-2.3.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2 Installing ruby-2.3.1... BUILD FAILED (OS X 10.12.6 using ruby-build 20160426) Inspect or clean up the working tree at /var/folders/lq/c0x8lzm12rvffxb0hj8qpf1h0000gn/T/ruby-build.20170926163410.43398 Results logged to /var/folders/lq/c0x8lzm12rvffxb0hj8qpf1h0000gn/T/ruby-build.20170926163410.43398.log Last 10 log lines: Referenced from: /private/var/folders/lq/c0x8lzm12rvffxb0hj8qpf1h0000gn/T/ruby-build.20170926163410.43398/ruby-2.3.1/./miniruby Expected in: /usr/lib/libSystem.B.dylib dyld: Symbol not found: _utimensat Referenced from: /private/var/folders/lq/c0x8lzm12rvffxb0hj8qpf1h0000gn/T/ruby-build.20170926163410.43398/ruby-2.3.1/./miniruby Expected in: /usr/lib/libSystem.B.dylib make: *** [.rbconfig.time] Abort trap: 6 make: *** Waiting for unfinished jobs.... encdb.h updated
はい。エラーです。
Xcode8環境下でrbenvにてrubyのコンパイルに失敗する - Qiita
Xcode の必要なツールをインストールすればよさそう。
$ xcode-select --install xcode-select: note: install requested for command line developer tools
Xcode のツールをインストールしたので、ruby をインストールする前に、 もう一度 MailCatcher をインストールしてみます。
$ sudo gem install mailcatcher Building native extensions. This could take a while... Successfully installed eventmachine-1.0.9.1 Fetching: mime-types-data-3.2016.0521.gem (100%) Successfully installed mime-types-data-3.2016.0521 Fetching: mime-types-3.1.gem (100%) Successfully installed mime-types-3.1 Fetching: mail-2.6.6.gem (100%) Successfully installed mail-2.6.6 Fetching: rack-1.6.8.gem (100%) ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/rackup
はい。エラーです。
しかし、エラーメッセージが今までと変わりました。
このエラーは調べてた時に見ましたね。
MacOSX El Capitanでcocoapodsインストールが出来ない時の対処法 - Qiita
rootless が原因のようなので、書いてあるとおりパスを指定してインストールします。
$ sudo gem install -n /usr/local/bin mailcatcher Successfully installed rack-1.6.8 Fetching: tilt-2.0.8.gem (100%) Successfully installed tilt-2.0.8 Fetching: rack-protection-1.5.3.gem (100%) Successfully installed rack-protection-1.5.3 Fetching: sinatra-1.4.8.gem (100%) Successfully installed sinatra-1.4.8 Fetching: daemons-1.2.4.gem (100%) Successfully installed daemons-1.2.4 Fetching: thin-1.5.1.gem (100%) Building native extensions. This could take a while... Successfully installed thin-1.5.1 Fetching: skinny-0.2.4.gem (100%) Successfully installed skinny-0.2.4 Fetching: mailcatcher-0.6.5.gem (100%) Successfully installed mailcatcher-0.6.5 Parsing documentation for rack-1.6.8 Installing ri documentation for rack-1.6.8 Parsing documentation for tilt-2.0.8 Installing ri documentation for tilt-2.0.8 Parsing documentation for rack-protection-1.5.3 Installing ri documentation for rack-protection-1.5.3 Parsing documentation for sinatra-1.4.8 Installing ri documentation for sinatra-1.4.8 Parsing documentation for daemons-1.2.4 Installing ri documentation for daemons-1.2.4 Parsing documentation for thin-1.5.1 Installing ri documentation for thin-1.5.1 Parsing documentation for skinny-0.2.4 Installing ri documentation for skinny-0.2.4 Parsing documentation for mailcatcher-0.6.5 Installing ri documentation for mailcatcher-0.6.5 Done installing documentation for rack, tilt, rack-protection, sinatra, daemons, thin, skinny, mailcatcher after 314 seconds 8 gems installed
成功しました!
そして MailCatcher が起動しました。
$ mailcatcher Starting MailCatcher ==> smtp://127.0.0.1:1025 ==> http://127.0.0.1:1080 *** MailCatcher runs as a daemon by default. Go to the web interface to quit.
以下その他の参考サイトです。
El Capitanにしたらmailcatcherがなくなっていたので入れなおす | のぶろぐ
Gem install で Operation not permitted された時の対応(追記あり) - Qiita
・
・
・
っとココまで進めたのですが、色々勘違いしてまして、もともと mac では MailCatcher ちゃんと使ってなかったぽい?です。
vagrant に入れて動かしてようです。
が、なぜか vagrant も動かなくなってる....。
rbenv 自体が動いてないようです。
mac も vagrant もいろいろ試してそのままなので余計なものとかいっぱいあるし、もうどうなってるのかよくわからない。
そろそろメンテンスが必要ですね。
MySQLで文字列の結合
MySQLで既存のカラムに文字列を結合したい場合は、CONCATを使います。
select concat(column1, column2, column3, column4) from table;
更新時
update users set name = concat(name, "追加したい文字列") where id = 1;
他のカラムと結合させる
update users set name = concat(name, kana) where id = 1;
ただし、null が対象のカラムに入ってる場合には結合してくれず、null のままになってしまいます。
null が入っていても結合するためには、ifnull で対象カラムが null だったら空文字に変換して結合するようにします。
update users set name = concat(ifnull(name, ""), "追加したい文字列") where id = 1;
これで問題なく結合されるようになりました。
EC-CUBE3で管理画面にログインできない問題の対処方
開発環境で Vagrant を使っている時に問題になりました。
調べてみると Vagrant の設定を変更して対応したサイトを幾つか見つけました。
ただ、うちの環境だと nfs を設定しているため設定しようとすると
以下のようなエラーが表示されます。
* Shared folders that have NFS enabled do not support owner/group
そもそも、ログインできないのは
EC-CUBE側でセッションの保存先を変更していて、
そのディレクトリの権限がないからということなので、
セッションの保存先を変更しないようにしました。
"session.storage.save_path" で検索すると
EC-CUBE のバージョンが 3.0.11 だと以下のファイルにでてきました。
eccube3/src/Eccube/Application.php
コメントアウトします。
$this->register(new \Silex\Provider\SessionServiceProvider(), array( // 'session.storage.save_path' => $this['config']['root_dir'].'/app/cache/eccube/session', 'session.storage.options' => array( 'name' => 'eccube', 'cookie_path' => $this['config']['root_urlpath'] ?: '/', 'cookie_secure' => $this['config']['force_ssl'], 'cookie_lifetime' => $this['config']['cookie_lifetime'], 'cookie_httponly' => true, // cookie_domainは指定しない // http://blog.tokumaru.org/2011/10/cookiedomain.html ), ));
ログインできました!!
ちなみに、あくまで開発環境での対応になります。
本番ではちゃんと権限を与えて、
直接このファイルを編集しないようにしましょう。
GitBucketにSSH認証キーを設定してパスワードの入力なしで利用できるようにする
SSH経由でアクセスできるように設定する
rootアカウントでログイン
System administration → System Settings
SSH Access の Enable SSH access to git repository にチェックを入れる。
他のサイトでポートを変更しているところがあったけど、変更する必要はないみたいです。(これで嵌った
認証キーを作成する
cd ~/.ssh
パスフレーズはなしで登録する。
Account settings → SSH Keys で 公開鍵を登録する
Title はわかりやすいように名前を付ける。
Key には ~/.ssh/id_rsa.pub の内容をコピーする。
clone URL を ssh に変更してコピーする
ssh で clone を実行する
git clone ssh://ihiro81@example.com:29418/ihiro81/test.git
Kindleセールやってたので購入した本を紹介する。
前回のKindle50%ポイント還元セールでポイント貯まってたので、 気になる本を購入しました。
ちなみにまだ全然読んでないので内容はわかりませんが、 見た感じどれも評価高めなので面白いはず。
購入した本
読みたいと思ってたけど読めてなかったサイバーエージェントの藤田さん本。
- 作者: 桜井章一,藤田晋
- 出版社/メーカー: 幻冬舎
- 発売日: 2015/03/18
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 藤田晋
- 出版社/メーカー: 幻冬舎
- 発売日: 2013/04/15
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
- 作者: 藤田晋
- 出版社/メーカー: 幻冬舎
- 発売日: 2013/04/15
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: 藤田晋
- 出版社/メーカー: 日経BP社
- 発売日: 2014/02/14
- メディア: Kindle版
- この商品を含むブログを見る
前話題になってたので。
- 作者: 久住昌之原作,土山しげる画
- 出版社/メーカー: 幻冬舎
- 発売日: 2015/04/17
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 久住昌之
- 出版社/メーカー: 幻冬舎
- 発売日: 2014/06/13
- メディア: Kindle版
- この商品を含むブログを見る
傷口から人生。 メンヘラが就活して失敗したら生きるのが面白くなった (幻冬舎文庫)
- 作者: 小野美由紀
- 出版社/メーカー: 幻冬舎
- 発売日: 2015/02/07
- メディア: Kindle版
- この商品を含むブログを見る
イケハヤさんのブログ見て面白そうだったので購入。
- 作者: トミイ大塚
- メディア: Kindle版
- この商品を含むブログを見る
Kindleセール嬉しいんだけど
毎回イケハヤさんのブログで知ってて、そのうち見逃しそう。
Amazon見ても全くわからないのでなんとかして欲しいな。
セール情報載せてるサイトありそうだけど作るか。