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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

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

PHP

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

1543閲覧

Vagrantの共有フォルダ内での実行だと動作するが、FTPでアップロードすると動作しない

johney

総合スコア8

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

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

PHP

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

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2016/10/20 15:57

###前提(開発環境)

  • Mac
  • vagrant(Cent OS 6.7)
  • php5.5

###発生している問題・エラーメッセージ

こんにちは。

vagrantの共有フォルダにプロジェクトフォルダを作成して、そのフォルダをIDEで参照して開発をしております。
共有フォルダにあるプログラムを実行する際、ssh vagrandでログインして対象の共有フォルダに移動して実行すると、問題なく動作するのですが、そのプロジェクトフォルダをFTPでvagrant上のLinuxの別の場所にアップロードして、そのアップロードしたフォルダ内で実行すると、うまく動作しません、、、
※なぜこんなことをしているかというと、本番環境のLinuxにアップロードすると動作しないため、そのように検証してみました

インストールされているPHP絡みのRPMは同じで、php.iniもデフォルトのままです。

確認ポイントとしてどの辺りを見ればいいのか、ご教授いただけますと幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)

phpの設定をUTF8に設定したり、ソースコードの改行コードをLFに全て変換したりしましたが、動作しませんでした。※一部、CRLFのコードが混入しておりましたが、変換する前でも共有フォルダ内のプログラムは動作しておりました。
アップロードする際も、ASCIモードで転送をしても状況が変わらずでした。

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

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

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

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

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

guest

回答2

0

自己解決

お世話になります。

結論から言いますと、解決しました!

RecursiveIteratorIteratorであるディレクトリのファイル一覧を取得しているのですが、どうもその結果がOS環境によって違うようで、処理がこけていました。

想像ですが、

・vagrantの共有フォルダの実行はOK→nfs (WIndows、MacでもOK)
・vagrantの共有フォルダ以外のフォルダでの実行はNG→ext4

のようにファイルシステムによって、処理結果が異なるのかなーと思いました、、、
取得したiteratorを再度loopで回して並びを変える処理をいれたところ、どの環境でも動作するようになりました。iteratorを直接回すという横着はダメなんですかね?
とりあえず、解決して一安心しました。
ご回答のおかげで調査もできました。ありがとうございました!

投稿2016/10/23 05:10

johney

総合スコア8

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

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

0

状況がよくわからないので検討違いだったら申し訳ございません。

実行させようとするプログラムがどのようなものかわかりませんが、apacheで動作するウェブサイト?でしょうか?
そうだとして進めると共有フォルダの方はapacheのhttpd.conf等の設定がなされているのに、

Linuxの別の場所にアップロードして

別の場所は設定がなされていないというような問題ではないでしょうか?

投稿2016/10/20 16:15

hiim

総合スコア1689

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

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

johney

2016/10/21 00:23

ご回答ありがとうございます。 Webサイトではなく、単純なバッチのようなPHPプログラムになります。
hiim

2016/10/21 01:07

検討違いな回答すいません、バッチファイルのようなphpプログラムという事ですが、たとえばそのファイルが、hoge.phpという名前だったとして、vagrant sshで接続して該当のディレクトリへ行き、実行権限を付け、./hoge.phpとしたとき、何かメッセージ等でますか?何もエラーが出ず、実行結果だけが目的の結果が得れないというのであれば、ソース等乗せていただかないと、的確な回答はできませんので恐縮ですが、手っ取り早いのはスクリプト途中にecho等でDEBUGメッセージをはかせてどこまでが正常に動作しているのか、どこからがおかしいのか切り分けられてはいかがでしょうか?ファイル無いに相対パスなどがあって場所を変えたら正常動作しない等色々可能性はありそうですので。。
johney

2016/10/22 09:20 編集

ご回答ありがとうございます。 そうですね、ソースコードを載せられると良いかと思いますが、クラスも多いバッチでして、載せるのが難しく、すみません、、、、 引き続き、確認しているのですが、まだ動かずしてでして、、、 以下は試しているのですが、なぜ動かないのか疑問です(includeパスとかも確認はしているのですが、、、) ・vagrantの仮想マシンにログインして、共有フォルダ内に移動し実行すると、プログラムは正常に動作する ・そのフォルダ内のプログラムを仮想マシン上の別のフォルダにコピーして、コピー先で実行すると動作しない ・vagrantの仮想マシンの共有フォルダ内にディレクトリを作成して、その中にコピーして実行すると正常に動作する なぜだか、vagrantの共有フォルダ内だとフォルダ階層に関係無く、正常に動作するのです、、、
johney

2016/10/23 05:09

お世話になります。 結論から言いますと、解決しました! RecursiveIteratorIteratorであるディレクトリのファイル一覧を取得しているのですが、どうもその結果がOS環境によって違うようで、処理がこけていました。 想像ですが、 ・vagrantの共有フォルダの実行はOK→nfs (WIndows、MacでもOK) ・vagrantの共有フォルダ以外のフォルダでの実行はNG→ext4 のようにファイルシステムによって、処理結果が異なるのかなーと思いました、、、 取得したiteratorを再度loopで回して並びを変える処理をいれたところ、どの環境でも動作するようになりました。iteratorを直接回すという横着はダメなんですかね? とりあえず、解決して一安心しました。 ご回答のおかげで調査もできました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問