Excelで作ったcsvファイルが行ロード出来ない

という問題
Excelで作ったcsvphpで行ロード(fgetcsvとか)しようとすると改行コードを認識せずなんだかすごい事になっていた

当たり前である
なんせ実行機はMacだったのだから。。。

さて、CRとLFによって改行コードはあらわされるわけですが、機種によって改行コードは異なります。
改行コード 	使用機種
LF 	UNIX系OS
CR 	マッキントッシュ
CR+LF 	WindowsMS-DOSWindowsNTも同様です)

 OSによって、改行コードが異なるので、クライアントのOSを限定できないWebプログラミングでは、注意が必要になります。 

改行コードの話より引用
通常、ブラウザなんかで見る場合
改行コードのギャップはブラウザが埋めてくれる
が、こーいった代物の場合は自力で埋めなければならない
なんせ、そーいった便利なシステムを作る側な訳だからだ

という訳で、こういったファイルアップで動くシステムの場合は改行コードに注意しておかなければならない
変換とかして統一すればイインデネーノ
と思ったがこんなオプションを見つけた

auto_detect_line_endings boolean

onにした場合、PHPは fgets() および file() により読み込まれたデータを評価し、UNIXMS-DOS、Machintoshの行末表記を使用しているかどうかを調べます。

これにより、PHPMacintoshシステムと相互運用できるようになりますが、 デフォルトはOffとなっています。これは、最初の行の行末表記を検出する際にごく僅かな性能劣化があるためと、UNIXシステムのもとで復改文字を項目セパレータとして使用している人が従来のバージョンと互換性がない動作であると感じる可能性があるためです。

注意: この設定オプションは、PHP 4.3で追加されました。 

PHP: 実行時設定 - Manualより引用
php.iniで設定されてる項目でこのギャップを自動で修正してくれるオプションがあった
デフォではoffになってるが、この問題に対応したくonにしても問題ないならこれで改行問題は気にしなくてよくなる
言うまでもないがiniを編集したくないなら以下の構文で制定出来る

ini_set("auto_detect_line_endings", true);

が、所詮は付け焼き刃なので改行変換して統一するべき何じゃないだろうか
でもさ、その場合ってどの改行コードにするのが一般的なんだろうね?

ちなみにfgetcsvだけれども、この関数はSJISにすごく弱いらしい
おのれSJIS。これ作った人はすごいと思うがいかんせん向いてない事が多すぎる
詳しい事はググって調べると色々出てくる。
まぁ、素直に行ロードして指定区切りで分けるとよろし

【 & 】 コマンドをバックグラウンドで実行する

コマンドの最後につける事で、そのコマンドをバックグラウンドで実行してくれる
MAC OSで行う場合は、ターミナルのタブ管理とかできるからあんまりありがたみがない
というか用途が少ない

$ $ sort address > result &
[1] 2507
$ -bash: result: Permission denied
$ jobs
-bash: $: command not found
[1]+  Exit 1                  $ sort address > result

なんか、実行したらエラー来たんだが
まぁ動きは某解説と同じ

Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile]

このエラーが鬼の要に乱発した
解決にきりきり舞いした上に混迷しまくったが、結果的に以下の部分が問題だった模様

  • 証明書と鍵のhost名称がVirtualHostのServerNameと違っていた

要するに証明書の不一致でこのエラーが出ていた模様

Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile]

原因が色々あるっぽい

  • VirtualHostの設定郡が複数回バラバラに記述されている
  • SSLEngine onが問題?

とりまSSLEngine onをコメントアウトしたらエラーは消えた
まあ別のエラーが出てるんでもしかしたらこの対処はだめかもね

httpd: apr_sockaddr_info_get() failed for

設定されているホスト名が正しくない
このエラー下に詳細が出ている。全文はこれ

httpd: apr_sockaddr_info_get() failed for [PC-NAME]
httpd: Could not reliably determine the server's fully qualified domain name, using [IP] for ServerName

PC-NAMEがIPと関連出来ていない?
解決しよう

httpd.confのServerNameを変更

ServerName localhost:80

と明示する


ちなみに
HOSTNAMEが見つからない場合も同様らしい
こちらは
/etc/hostsに追記する