ホーム > php

phpのアーカイブ

MacのOSをHigh Sierraにアップデートしたらphpが動作しなくなったので対処メモ

MacのOSアップデートが来ていたので、Hight Sierraにアップデートしたら、ローカルの開発環境のApacheのphpプログラムが動作しなくなってしまった。

具体的にいうとソースコードが表示されてプログラムが動作していない。

原因を調べてみると、とりあえずMacのOSを最新版にアップデートすると、Apacheの設定ファイルであるhttp.confが最新版に置き換わってしまうので、設定内容を確認する必要がある。

ちなみに、Macのhttpd.confは /etc/apache2/httpd.conf にあるが、OSアップデート時にアップデート前の設定ファイルが httpd.conf.pre-update にバックアップされている。

diff /etc/apache2/httpd.conf /etc/apache2/httpd.conf.pre-update

上記のコマンドで差分を確認できる。

差分を確認していると、結論から言うと MacのOSをHigh Sierraにアップデートすると、phpの推奨環境は php7 になっていて、php5は推奨されないようだ。

High Sierraでは、デフォルトの設定が

LoadModule php5_module libexec/apache2/libphp5.so

だったのが、

LoadModule php5_module libexec/apache2/libphp7.so

になっている。

無理にphp5を動かすことも可能だろうが、おとなしく推奨環境のphp-7に対応してみることにした。

対応としては、一旦phpをアンインストールしてから、最新版のphp7をインストールする。

homebrewを使っているので、まずは brew-update で homebrewを最新版にアップデートしてから、php5.6をアンインストールしてphp7をインストールすることにした。

ざっくりというと下記のようなかんじ。

brew update //homebrewを最新版にアップデート
brew unlink php56 //php5.6をアンインストール
brew install php71 //php7.1をインストール
php -v //バージョン確認

これでphpのバージョンが7にできていることを確認できた。

これで httpd.confの諸々の設定を変更してみたのだが、相変わらず動作しない。

Apacheのエラーログをあさってみたところ

#LoadModule unixd_module libexec/apache2/mod_unixd.so

LoadModule unixd_module libexec/apache2/mod_unixd.so

この読み込みができていなくてエラーが出ているようだったので、コメントを外すことで動作するようになった。

しかし、これでようやくApacheのサーバは動作するようになったのだが、phpのプログラムがエラーで動作しなくなった。

調べてみると、php7系では、mysql系の関数がオブジェクト指向の使い方が推奨されていてmysql系の関数が使用できなくなっているようなので、諸々修正する必要があるようだ。

とりあえず、データベース接続関係以外のプログラムは問題なく動作していたので、該当箇所だけ修正しないといけないのだが、けっこう多くの修正が必要となってしまうが、この対応はまた時間があるときにする予定。

phpmyadminでCSVインポートが途中できれるのに対処

とある案件で、CSVの大きなデータがあり、それをphpmyadmin経由でデータベースにインポートする必要がありました。

そこで、ローカルにテスト環境を構築し、phpmyadmiを入れて早速データインポートのテスト。

しかし、途中まで取り込みは成功するのに、何故か途中で画面が真っ白になってしまい、2万件ほどあるデータのうち7000件ほど出きれてしまう状態。

ネットでいろいろと対応策を探してみた。

まずはphpの設定を見なおしてみて、upload_max_filesizeや、post_max_size、memory_limitとか、、。

しかし、どれを設定してみてもうまくいかない。

しかし、最終的にはふとしたことがきっかけで対応することができた。

それは、はじめはCSVがShift-Jisの文字コードだったので、インポートもShift-Jisでインポートしていたのだけれど、テスト中間違えてURTF-8にして取り込むと、文字化けはしたものの、問題なく2万件全て登録できた。

ん・・・UTF-8だったらいけるのか?

ということで、CSVファイルをUTF-8で保存し直し、UTF-8でインポートし直してみると、、、うまくいきました。

ということで今回はこの方法で解決。
原因の詳しいところはわからずじまいだったが、文字コードに関する微妙な問題だったんだと思われる。

ちなみに、使っているPCはMACで、CSVを編集したり、UTF-8に変換するのは、CSVエディター2というソフトを購入して使っている。

1800円するので導入するのには少しためらいはあったが、最低限必要な機能はひと通り揃っているので問題なく今のところ使えている。

ホーム > php

フィード

ページの上部に戻る