アプリ版:「スタンプのみでお礼する」機能のリリースについて

書いたPHPスクリプトを、
ローカルではWindows版XAMPP上で動作確認し、
リモートでは実際にLinux系サーバーで動かしています。

ローカルで書いたコードを、(当たり前ですが、)手を加えずに、
そのままの形で、リモートでも使えたらいいなと、いつも思っているわけですが、
サーバーOSが、WinとLinuxと、異なるため、
パス周りのコーディングで、しばしば、つまずいてしまいます。

例えば、
echo dirname(__FILE__) ;
では、
パス区切り文字として、

リモート: / (スラッシュ)
ローカル: ¥ (バックスラッシュ)

といった違いが生じたりします。

ローカルのWindows環境でも、パス区切り文字として「/」を使えるので、
手打ちの部分においては、どちらのOSでも使える「/」(スラッシュ)で対応していますが、
先ほどのdirname(__FILE__) の例のような場合には、本当に困ってしまいます。
(文字列置換関数や正規表現なんかで、いちいち変換すべきなのでしょうか?)

何か、上手い知恵などありましたら、どなたか教えてください。

A 回答 (5件)

こんにちは。



DIRECTORY_SEPARATOR
でPHPが稼働しているOSの区切り文字が取得できますがいかがでしょうか。
    • good
    • 0
この回答へのお礼

回答をありがとうございます。

あぁ~、そういうの、ありましたね~!w
PHPユーザの多くが、
ローカルはWindows、リモートがUnix系OS、
という環境でしょうから、
この、パスの区切り文字の違いは、
皆さん、何らかの形で克服しているものと思っておりましたが、
その解決策の有力候補が、まさか、この、

DIRECTORY_SEPARATOR だったとは!?w

こんな、いかにもなモノが用意されているくらいですから、
おそらく、このDIRECTORY_SEPARATORを使うというのが、
ベストな作法なのでしょうが、、、

それにしても、、

長い。。。(パス文字は1文字だというのに。。。こやつ、長すぎる。。。)

あんまり使いたくない。。。w

まぁ、これを、さらにdefine()で、短く定義しなおして使う
なんていうのもアリなんでしょうけれど、
そういうのは、あまり好きではないかなぁ。。。とか、ゴニョゴニョ言っちゃう。

っていうか、皆さんは、本当にこれを使っているんでしょうかね?!w

お礼日時:2013/02/25 16:29

>sqlite PDOのDSN接頭辞では絶対パスの入力を求めてくるので、


>そこだけは絶対パスで書いてます。

DSNこそ「データベースを扱う全部のスクリプトで共通に読み込む」ファイルに書くだけですね。

#common.incでなければdb.incとかww

たとえ(SQLiteでなく)MySQLだったとしても、ローカルのテスト環境と本番環境で同一ということはまずありませんから。逆に「あちこちのスクリプトに書いている」のであれば、そっちの方がマズイ気がします(汗
    • good
    • 0
この回答へのお礼

回答をありがとうございます。

参考にさせて頂きます!

お礼日時:2013/03/01 23:28

私もVMwareにlinux入れて仮想サーバ立ててやってます。

    • good
    • 0
この回答へのお礼

回答をありがとうございます。

>VMwareにlinux入れて仮想サーバ立ててやってます。

参考になりました。ありがとうございます。

お礼日時:2013/02/26 13:15

ほとんど「/」だけで書いてます。



私の場合は、そもそも「フルパス(サーバパス)」で記述しなければいけない場面を作りません。どうしても必要な場合には、全部のスクリプトで読み込む共通部(common.incとか)で定義して使います(サーバが変われば、その部分だけ書き換える)。
まぁそのcommon.incでdirname(__FILE__)を元に生成してもいいんでしょうけど・・・
    • good
    • 0
この回答へのお礼

回答をありがとうございます。
(こちらにお礼をするのを忘れておりました。失礼しました。)

>ほとんど「/」だけで書いてます。
>そもそも「フルパス(サーバパス)」で記述しなければいけない場面を作りません。

私も似たような考え方でコーディングをしているのですが、
sqlite PDOのDSN接頭辞では絶対パスの入力を求めてくるので、
そこだけは絶対パスで書いてます。
(そんなsqliteなんて使うな、というお話は無しでお願いしますw)

お礼日時:2013/02/26 13:14

こんにちは。



開発環境(コーディング等)はWindowsですが、VMを利用してLinuxサーバーで検証してますよ。

よって、自分は使ってないです。
    • good
    • 0
この回答へのお礼

回答をありがとうございます。

>VMを利用してLinuxサーバーで検証

そ、そんな方法もあるんですね。。。!!

WinとLinuxの挙動の違いというのは、
パスの区切り文字以外の所にも表れるでしょうから、
そうしたことも考慮すると、

検証も、「本番と同じLinux環境で」出来たら、
やはり安心ですよね。

私も今後、検討してみたいなと思います。

お礼日時:2013/02/25 19:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!