2021年09月09日 13:09   編集
改行コードってあまり気にしていなかったが、あまり無頓着だとトラブルになるようだ。
Linuxサーバー上での動作をチェックするために久しぶりにCGIファイルをWebサーバーにアップロードしてみたのだが、
500エラーで動作しないという問題が発生した。パーミッションをいじっても動くようにならず、なんでだと思っていたら
CGIファイルの改行コードがCRLFになっていたのが原因だった。

以前はCRLFでもエラーは出ていなかったはずと思ったが、どうも以前はFTPソフトでテキストモードでアップロードしていたので、自動的に改行コードがサーバーにあったものに変換されていたようだ。最近はテキストモードではなくバイナリモードでアップロードしているので、CRLFのファイルはCRLFのままアップされる。

整理しておくと改行コードはLF、CR、CRLFとあって、OSによって使う改行コードが違う。
LinuxなどUNIX系はLF、MacはCR、WindowsはCRLFを使う。プログラムでは、LFは"\n" CRは"\r" CRLFは"\r\n"と記述する。

でWeb上のサーバーはLinux系が多いので、そこで使用するCGIファイルはLFを使わなければならないということなのだろうが、不思議なことにPHPはCRLFのままでも問題なく動いている。
それとWindowsにインストールしたXamppでは、WindowsなのでCRLFで動くのは当然として、LFでも問題なく動く。

Webサーバー上のCGIファイルの改行コードは、OSで使用する改行コードを使うことが望ましいが、使わないと絶対ダメというほどではないということか。いずれにしても、WebプログラムのファイルはLFで統一しておくのが無難かもしれない。
ちなみにWindows標準のテキストエディタ「メモ帳」は、以前はLF改行コードでは改行されなかったが、最近のはちゃんと改行されるようだ。
戻る

bbs.phpのヘルプ

掲示板を作成する
■ファイルアップロード、返信、過去ログ生成、隠しパラメータ送信によるスパム投稿対策、スライドロックによるスパム投稿対策
オプションは[[bbs('lock=1|max_log=100|item=thread')]]のように指定

指定できるオプション

form (現在の設定はform=up)
form=up(フォームを上に表示) form=down(フォームを下に表示)
item (現在の設定はitem=time)
デフォルトの記事表示順を指定
item=time(投稿順) item=thread(スレッドごとに表示)
max_log (現在の設定はmax_log=100)
現行ログの保存数。これを超えると過去ログに移動。
例 max_log=50
max_past (現在の設定はmax_past=100)
過去ログに保存する記事数。これを超えると過去ログファイルを新たに作成。
例 max_past=100
page_line (現在の設定はpage_line=10)
1ページに表示する記事数。これを超えると次のページに表示
例 page_line=10
lock (現在の設定はlock=1)
スライダで投稿ボタンをロックする lock=1で表示する
例 lock=1
perm_tag (現在の設定はperm_tag=)
許可するタグ。複数ある場合は;(セミコロン)で区切る。
有効になるのはタグ名だけを<>で囲った場合とその閉じタグだけ。styleなどは指定できない。
例 perm_tag=pre;h1
nameless (現在の設定はnameless=id)
投稿者名未入力で投稿した場合、表示される名前を指定。'id'にすると、日付とIPアドレスを元にしたIDを表示
例 nameless=id
titleless (現在の設定はtitleless=無題)
タイトル未入力で投稿した場合、表示されるタイトルを指定。
例 titleless=タイトルなし
hide_bbs (現在の設定はhide_bbs=1)
デフォルトでフォームと投稿内容を隠す hide_bbs=1で隠す
例 hide_bbs=1
show_text (現在の設定はshow_text=)
添付したtextファイルの内容を表示する show_text=txt;phpのように表示するテキストファイルの拡張子を指定する。複数ある場合は;(セミコロン)で区切る
例 show_text=txt;log

counter:5,465