質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CRLF

CRLFは、改行コードのことです。 改行コードは、改行を表す制御文字です

Q&A

解決済

3回答

12248閲覧

PHPファイルを保存する時の改行コードの違いによる問題を教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CRLF

CRLFは、改行コードのことです。 改行コードは、改行を表す制御文字です

0グッド

1クリップ

投稿2015/07/16 06:37

こんにちは。お世話になっております。
今回は、PHPファイルの改行コードの違いについてお聞きしたくて投稿させて頂きました。

まず前提として、
私はMacを使っており、vimをエディタとして使っております。
そして現在他のwindows系マシンで編集されたPHPファイルをいじっているところです。
では以下のことをご質問させて頂きます。

上で話させて頂きました今扱っているPHPファイルの改行コードが、「 CR+LF」のwindows系のものなので、私がMacで編集しそのまま保存すると「LF」のUNIX系の改行コードに変更されてしまいます。
これはOSが違う環境では普通のことなのでしょうか?
それともこれは元の「CR+LF」のwindows系の改行コードに合わせて保存しないと、PHPの動作自体に影響を与えるものなのでしょうか?

実際の動作環境で改行コードの違いで問題を起こしうるものなのかどうかをお聞きしたいと思います。
できれば具体的な対策も教えて頂けますと幸いです。
初歩的な質問ではありますが、どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

これはOSが違う環境では普通のことなのでしょうか?

チーム内で取り決めがなければそうなりますね。

ただし、ソース管理やフォーマッターを使っていたりすると最終更新者が書き換わってしまったりする問題が起きるので、以下のようにコーディング規約に基づいて開発するのが基本です。

PHPコーディング規約まとめ

IDEなどでは、どちらの改行コードを使用するか設定できるので、チーム内で統一しておきましょう。

投稿2015/07/16 06:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/07/16 07:58

ご回答ありがとうございます! なるほど、今回はチームではなく個人でこのプロジェクトのファイルの編集を行っているので、元ファイル主との取り決めが共有できていませんでした。 PHPコーディング規約まとめ、読ませて頂きます。 貴重なアドバイスありがとうございました!
guest

0

ベストアンサー

例えば次のように文字列中に改行が含まれている場合、その値に \r を含むかどうかという違いがあります。

lang

1<?php 2$str = " 3"; 4var_dump(bin2hex($str));

このようなものが実行時に実際に問題になることはほとんどないと思いますが。。。


これはOSが違う環境では普通のことなのでしょうか?

OS が、というよりエディタが、だと思います。それは vim の機能だと思います。

例えば、Windows でもエディタの設定によっては改行コードを LF にすることはできます。
(というか、大抵の Web 系の開発の人はそうしています)

PHPの動作自体に影響を与えるものなのでしょうか?

前述の通り、ほとんど影響はないと思いますが、絶対にないとは言い切れません。

できれば具体的な対策も教えて頂けますと幸いです。

あらかじめコーディングルールなどで改行を LF にするように規定しておくのが理想です。
PSR-2 でもそのように規定されています。

既存のコードの改修であれば、わたしは次のようにしています。

改行コードを変更しても問題がないことに確信が持てない場合

  1. 改行コードが CR+LF になるようにエディタの設定を変更する

改行コードを変更しても問題がないことに確信が持てる場合

  1. メンバーに改行コードを LF にするように周知する
  2. 改行コードを変更するためだけの修正を行なう
  3. git などで「Fix line break code」のようなメッセージでコミットする
  4. 本来修正したかった箇所を修正してコミットする

ポイントは 2 と 3 でコミットを分けることです。これは、後述のようにバージョン管理ツールを使っている場合に、本来変更したかった場所がどこだったのかを少しでもわかりやすくするためです。


また、動作以前の問題として、git などのバージョン管理ツールを使っていると、

私がMacで編集しそのまま保存すると「LF」のUNIX系の改行コードに変更されてしまいます。

によって、すべての行が変更されているかのような差分になってしまい、ほんとうに変更した箇所がわからなくなってしまう、という問題があります(差分ツールの方で改行コードの違いを吸収できることもありますが)。

世間一般で「改行コードは揃えるべき」と強く言われているのは、これが理由だと思います。

投稿2015/07/16 07:03

ngyuki

総合スコア4516

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/07/16 08:23 編集

ご回答ありがとうございます! それぞれの質問にご丁寧に回答頂きまして、ありがとうございます。 対策につきましても、私が今まで試していなかったものばかりだったので参考にさせて頂きたいと思います。 もう1つご質問をさせて頂きたいので、もし宜しければご回答頂けますと有り難いです。 1 今あるサイトの改修作業を、直接サーバー上ではなくてファイルのみダウンロードしてローカルで改修を行っているのですが、そのサイトはおそらくwindows環境で開発されたもののようで、私がMacのvimでそれらのphpファイルを開くと、「^M」という制御文字が行末に表示されることがあります。 これは改行コードがCR+LF(windows)のファイルをLF(unix)で開こうとしているときに起きる、ということは調べてわかったのですが、一方で、あるphpファイルは開いたときにCR+LF(windows)の改行コードのまま開けているものがあります(^Mは表示されず、vimの改行コードを確認するコマンド:set ffを打つとdos(windows)と出ます)。 この2つのケースの違いはなんなのでしょうか? そしてあるファイルは開いた時からLFのものもあるので、windows系とunix系の改行コードが元から混在しているのではないかとも思っています。 今までphpファイルを編集するときに改行コードを意識したことがなかったので、どのように対処すればよいか分かりかねています。 最初の質問とかぶる部分があるかもしれませんが、お答えできる範囲で結構ですので、ご教授頂けますと幸いです。 お手数ですが、どうぞよろしくお願い致します。
ngyuki

2015/07/16 08:28

わたしは vimmer ではないので vim のことはわかりかねますが・・ おそらく vim にも改行コードを自動認識する機能があり、どちらの改行コードもサポートしているのだと思います。 「^M」と表示されるファイルは、一つのファイルのなかで CRLF と LF が混在しているのではないでしょうか?
退会済みユーザー

退会済みユーザー

2015/07/16 08:40

なるほど。自動認識で判別しているためファイルによって違いがでてくるのですね。 確認もせずvimのことばかり聞いてすみません。。 ありがとうございました! 最初のご回答でも、改行コードの違いに関しては問題が起こることはほとんどないとのことですので、今回はそれほど心配しないでも大丈夫なのかもしれませんね。 最終は実際の環境に合うように改行コードも決めて行きたいと思います。 長々となりましたが、おつきあい頂きありがとうございました。 またご質問させて頂くかもしれませんが、その時はよろしくお願い致します。
guest

0

私はMacを使っており、vimをエディタとして使っております。

すばらしいです。Vim最高です。

そして現在他のwindows系マシンで編集されたPHPファイルをいじっているところです。

そのアプリケーションが「CR+LF」でそろえた物なら「CR+LF」で開発される事をお勧めします。

それともこれは元の「CR+LF」のwindows系の改行コードに合わせて保存しないと、PHPの動作自体に影響を与えるものなのでしょうか?
実際の動作環境で改行コードの違いで問題を起こしうるものなのかどうかをお聞きしたいと思います。

かなりの確率で問題が発生します。
また、文字コードもUTF-8のBOM付きやShift-JISで保存されている可能性があります。
こちらも確認を行い開発される事をオススメ致します。

できれば具体的な対策も教えて頂けますと幸いです。

実働環境に合わせた改行コードや文字コードにしましょう。
vimの設定については下記のサイト等が参考になるのではないでしょうか?
http://advweb.seesaa.net/article/3074705.html

投稿2015/07/16 06:47

nanndemoiikara

総合スコア775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/07/16 07:55

ご回答ありがとうございます。 なるほど、やはり改行コードは合わせて開発するのが普通なのですね。 URLを教えて頂きありがとうございます。実際に見て勉強してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問