
書いたPHPスクリプトを、
ローカルではWindows版XAMPP上で動作確認し、
リモートでは実際にLinux系サーバーで動かしています。
ローカルで書いたコードを、(当たり前ですが、)手を加えずに、
そのままの形で、リモートでも使えたらいいなと、いつも思っているわけですが、
サーバーOSが、WinとLinuxと、異なるため、
パス周りのコーディングで、しばしば、つまずいてしまいます。
例えば、
echo dirname(__FILE__) ;
では、
パス区切り文字として、
リモート: / (スラッシュ)
ローカル: ¥ (バックスラッシュ)
といった違いが生じたりします。
ローカルのWindows環境でも、パス区切り文字として「/」を使えるので、
手打ちの部分においては、どちらのOSでも使える「/」(スラッシュ)で対応していますが、
先ほどのdirname(__FILE__) の例のような場合には、本当に困ってしまいます。
(文字列置換関数や正規表現なんかで、いちいち変換すべきなのでしょうか?)
何か、上手い知恵などありましたら、どなたか教えてください。
No.1ベストアンサー
- 回答日時:
こんにちは。
DIRECTORY_SEPARATOR
でPHPが稼働しているOSの区切り文字が取得できますがいかがでしょうか。
回答をありがとうございます。
あぁ~、そういうの、ありましたね~!w
PHPユーザの多くが、
ローカルはWindows、リモートがUnix系OS、
という環境でしょうから、
この、パスの区切り文字の違いは、
皆さん、何らかの形で克服しているものと思っておりましたが、
その解決策の有力候補が、まさか、この、
DIRECTORY_SEPARATOR だったとは!?w
こんな、いかにもなモノが用意されているくらいですから、
おそらく、このDIRECTORY_SEPARATORを使うというのが、
ベストな作法なのでしょうが、、、
それにしても、、
長い。。。(パス文字は1文字だというのに。。。こやつ、長すぎる。。。)
あんまり使いたくない。。。w
まぁ、これを、さらにdefine()で、短く定義しなおして使う
なんていうのもアリなんでしょうけれど、
そういうのは、あまり好きではないかなぁ。。。とか、ゴニョゴニョ言っちゃう。
っていうか、皆さんは、本当にこれを使っているんでしょうかね?!w
No.5
- 回答日時:
>sqlite PDOのDSN接頭辞では絶対パスの入力を求めてくるので、
>そこだけは絶対パスで書いてます。
DSNこそ「データベースを扱う全部のスクリプトで共通に読み込む」ファイルに書くだけですね。
#common.incでなければdb.incとかww
たとえ(SQLiteでなく)MySQLだったとしても、ローカルのテスト環境と本番環境で同一ということはまずありませんから。逆に「あちこちのスクリプトに書いている」のであれば、そっちの方がマズイ気がします(汗
No.4
- 回答日時:
私もVMwareにlinux入れて仮想サーバ立ててやってます。
回答をありがとうございます。
>VMwareにlinux入れて仮想サーバ立ててやってます。
参考になりました。ありがとうございます。
No.3
- 回答日時:
ほとんど「/」だけで書いてます。
私の場合は、そもそも「フルパス(サーバパス)」で記述しなければいけない場面を作りません。どうしても必要な場合には、全部のスクリプトで読み込む共通部(common.incとか)で定義して使います(サーバが変われば、その部分だけ書き換える)。
まぁそのcommon.incでdirname(__FILE__)を元に生成してもいいんでしょうけど・・・
回答をありがとうございます。
(こちらにお礼をするのを忘れておりました。失礼しました。)
>ほとんど「/」だけで書いてます。
>そもそも「フルパス(サーバパス)」で記述しなければいけない場面を作りません。
私も似たような考え方でコーディングをしているのですが、
sqlite PDOのDSN接頭辞では絶対パスの入力を求めてくるので、
そこだけは絶対パスで書いてます。
(そんなsqliteなんて使うな、というお話は無しでお願いしますw)
No.2
- 回答日時:
こんにちは。
開発環境(コーディング等)はWindowsですが、VMを利用してLinuxサーバーで検証してますよ。
よって、自分は使ってないです。
回答をありがとうございます。
>VMを利用してLinuxサーバーで検証
そ、そんな方法もあるんですね。。。!!
WinとLinuxの挙動の違いというのは、
パスの区切り文字以外の所にも表れるでしょうから、
そうしたことも考慮すると、
検証も、「本番と同じLinux環境で」出来たら、
やはり安心ですよね。
私も今後、検討してみたいなと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 ドライブとボリューム 6 2022/10/25 18:38
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- ネットワーク 「ファイル名を指定して実行」が遅い 4 2023/04/04 21:50
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- 政治 沿線住民の利益を考えれば、赤字路線は切り捨てるのは当然ではないか? 4 2022/04/12 08:59
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- その他(Microsoft Office) Excelの条件付き書式についての質問です。 2 2022/09/08 01:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカル環境でのCGIの処理速度...
-
インターネット経由でsubversion
-
学校のWiFiに繋げると履歴が見...
-
社内ネットワークの1台だけ接...
-
社内サーバーやサーバー内のフ...
-
ftpコマンドのput,mputの上書き...
-
インターフェースサーバーとは...
-
エックスサーバーでhttpd.conf...
-
Becky!ver2 メールの受信に凄く...
-
ipconfigで、DNSが複数みえる
-
ネットワーク上のRPSってなんな...
-
cronの設定が消える
-
サーバールームは事務用スペー...
-
winscpのエラー
-
VPNにしたらODBCがSqlServerを...
-
SSHによる通信で速度が出なくて...
-
誘われたDiscordサーバーから追...
-
IMAPがオフラインでも読める理...
-
サーバーってどこにあるの?
-
Googleドライブのウェブ公開、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パス区切り文字(¥と/)
-
PHP を使い、webminのようにリ...
-
インターネット経由でsubversion
-
phpでbmpを読み込む
-
XAMPPの設定について
-
WordPressとDreamWeaver連携
-
PEAR Net_FTP put利用方法
-
PHPのパーミッション変更の方法
-
phpのデバッグ
-
PHP 5.2.xを使い続けても大丈夫?
-
PHP LANネットワーク内 IPアド...
-
WinNTとWin9xとの差を解消したい?
-
バージョン
-
LAMP構成のAPサーバー
-
apacheをローカル使用時ステー...
-
mysql5+phpMyAdmin5でのマルチ...
-
専用サーバー選びについて教え...
-
バージョンについて
-
ローカルPC(windows)での開発環...
-
phpinfo で MySQL のバージョン...
おすすめ情報