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

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

ただいまの
回答率

89.64%

Windows10 + XAMPP にて PHPが突如動作しなくなってしまった

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 541

Webuild

score 1

前提・実現したいこと

PHPが従来どおり動作してほしい(涙)

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

本日からすべてのXAMPP の htdocs 内にある PHP ファイルが動作しなくなりました。
昨日まではすべてのファイルが使用できている状態でした。

*-*-確認したこと-*-*
XAMPPのapacheが起動しているか(もちろんOK)
localhost/index.phpなど XAMPP に最初からあるファイルも不可
静的なファイル(.htmlなど)は問題なく閲覧可

エラーメッセージ

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Unknown: Failed opening required 'ファイルのパス' (include_path='.;C:\xampp\php\PEAR') in Unknown on line 0

該当のソースコード

<?php
echo "hello!";
?>

試したこと

上記コードのような単純なコードでも同じ結果になることを確認済み
なのでincludeとかそういうのが原因ではないとおもいます

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

環境:
Windows 10 PRO
64bit
Version: 1903

XAMPPのドキュメントルートはD:\にあるOneDriveに移動しています。

朝から仕事になりません><
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/09/05 10:34

    回答してしまっていますが、OneDrive配下に置いたのはどういった経緯・理由からでしょうか?

    キャンセル

回答 4

checkベストアンサー

+2

OneDrive管理下のフォルダはフォルダに見えて特殊なことをしているので、DocumentRootにOneDriveなどクラウドファイル共有サービス系フォルダを使うのは相応のリスクを背負うと察します。
(セキュリティ、アクセス権が強くて、システム管理者権限で動作するプログラムからアクセスできない可能性がある。)

代替案ですが、
元の状態で再設定した上で、DocumentRoot以下のファイル構造をOneDriveフォルダ下にコピーするバッチ処理でも用意すれば良いかと思われます。
例えば、「OneDriveにコピー.cmd」として

xcopy C:\XAMPP\htdocs\*.* C:\Users\hogehoge\OneDrive /y /s /e


を書いておくとか。


それでもOneDrive下で動かしたいのであれば、
「これだけすればいい」と伝えるのは難しくトライ・アンド・エラーの繰り返しになりますが、
OneDriveが管理しているフォルダのセキュリティをいじる必要性があります。

第2回 アクセス制御リストACL (1/2):Windows OS入門 - @IT
【Windows】NTFSのアクセス権の種類~高度なアクセス許可/特殊なアクセス許可一覧~ | SEの道標

など、アクセス権にまつわる情報収集を行ってアクセス権をコントロールすることになります。
「これだけやっておけば大丈夫」ってのがわかるまでトライ・アンド・エラーの繰り返しになるかと。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/05 10:45

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

    さっそく ディレクトリをもとの C:\ に戻したところ 動作しました。

    OneDriveが使えないのはかなり痛いです。。。
    突然使えなくなった原因はやはりWindows Updateでしょうか?

    もともと WEBとかサーバーとかFTPとかそれなに?美味しいの?なスタッフに
    WEBサイトを更新させるための苦肉の策でして・・・
    ディレクトリとか覚えてくれないので エクセルなら触れるスタッフにマクロを作ってボタン押したら
    自動でPHPコードを変更して保存する ・・・みたいな感じで運用していたのです。。。

    とりあえずご提案いただいたバッチで処理する方向で検討してみます。

    ありがとうございました。

    キャンセル

  • 2019/09/05 10:51

    いいえ、Windowsはユーザーがアクセスできるフォルダが、システム管理者権限下で動作するプログラムからアクセスできないよう、セキュリティが固く作られていることがあり、
    システムからユーザーのファイルを勝手に書き換えしたり、その逆が出来ないようにしてあるのが普通です。
    そのため、自分がアクセスできるからプログラムからもアクセスできる、と考えるのは危険です。
    フォルダに対して「プロパティ」を確認すると、セキュリティのタブにユーザーやグループの名前で読み書きなどアクセス権を設定することができるのですが、
    OneDriveなど特殊なことをしているフォルダはこの管理が普通のユーザーのフォルダと違うことがあり、
    権限不足でphpから読めない書けないということを引き起こしていたものと察します。
    NTFSのセキュリティ、アクセス権に関する情報を調べてみてください。

    キャンセル

  • 2019/09/05 10:56

    そうなのですか。。。
    このやり方でかれこれ2年くらいは動作してまして問題がなかったのであまり意識していませんでした。
    全体的にとにかく動けば良いや!で走ってきてるのでその辺の情報もさらって見たいと思います。

    キャンセル

  • 2019/09/05 20:52

    追記ありがとうございます♪
    セキュリティ権限については難しいですね。なんというか目に見えないし、情報もなにか少ない気がします。今回は一度すべてのユーザーでアクセス権限をフルアクセスにしてみてもいまして、それでもだめだったのでそもそもApacheからどういった処理がなされているのか、静的なファイルとPHPファイルではどう扱いが違うのか、そういったことを知る必要がありますね。まあOneDriveアプリの仕様も大きくかかわってくるのでしょうけど。。。

    キャンセル

+2

XAMPPのドキュメントルートはD:\にあるOneDriveに移動しています。

そこだと思います。
OneDriveってあくまでオンラインストレージですよね。
ローカルPC内の実際のディレクトリではないはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/05 10:56

    FTPのアップロードに関しては、GUIではなく、コマンドで動作するFTPクライアントを試すと良いかもしれません。例えばWinSCPとか。

    キャンセル

  • 2019/09/05 10:56

    >エクセルで 決められたフォームに文字列入れて ボタンを押すと PHPで作ったテンプレートファイルを更新して

    エクセルで入力しているようなことをWebから入力できるようにしたらひと手間減ると思います。そこもPHPで作ると。

    キャンセル

  • 2019/09/05 20:45

    >仮想サーバーをたててアクセスするのもありです。
    別の事務所もありそちらとも同じファイルを共有しているのです。
    なので手軽なとこでいくとWEBサーバーか、こういったクラウドかって感じの選択肢になります。

    >例えばWinSCPとか。
    調べてきました~半自動あるいは全自動のディレクトリ同期 も可能なんですね!
    FTPでアップしてるパートはこれに置き換えをTRYしてみたいと思います♪
    有益な情報ありがとうございます!

    >エクセルで入力しているようなことをWebから入力できるようにしたらひと手間減ると思います。そこもPHPで作ると。
    エクセルの方が仕様変更とかUI部分とかにコストがかからないのと、
    一遍に複数商品を作業するときとかの処理が楽にかけたり、コピペが楽だったり結構メリットが多いんです。マクロでほとんど自動化してますし♪
    PHPでも作れるのは作れるのですけど、スキルなさからかマクロの倍くらい作成に時間かかってしまいます。。。

    キャンセル

+1

XAMPPをディレクトリごと移動した後に、XAMPP に入っている setup_xampp.bat を実行することで、XAMPPを動かせるようになるかもしれません。
m6u さんのお話では、OneDrive が特殊な事をしているそうなので、必ず動くかどうかはわからないですが。。。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/05 11:01

    OneDriveにXAMPPをインストールするだけで良いかもしれませんね(親クライアントPCから実行できるかどうかは要確認)

    キャンセル

  • 2019/09/05 20:58

    ご回答ありがとうございます。
    OneDrive上にXAMPPまるごとお引越しということですかね?
    複数人で同時に使用することもあり、XAMPP本体が共有となるのはOneDriveの仕様的にもまずそうです><
    なにかするたびにログのコピーが大量にできてしまことが懸念されますね><

    余談ですが setup_xampp.bat でぐぐってみたらXAMPP ポータブル版というのもあるのですね。
    USBやNASとかにいれて使う用途でしょうかね。

    キャンセル

0

ご回答いただいた皆様ありがとうございました。

結論から申し上げて
やはりOneDriveがアップデートされたことによる不具合?でした

OneDriveの 設定 にある  ファイルオンデマンド  の

- リスト容量を節約し、ファイルを使用するときにダウンロードする

にチェックが入っていました。
もともと外していたのですが、アップデートで勝手に入ってしまったようです(デフォルトはONですので)

これを外したところ、無事にPHPファイルすべて表示されました。
ただこのチェックが入っていても同じドキュメントルートにある画像ファイルや.html、.jsファイルなどは閲覧できたのになぜPHPだけ?という素朴な疑問は残ったままですが
取り急ぎ解決にいたりましたのでご報告させていただきます。

コメントまだ返信いたしておりませんが、また仕事の時間がおわりましたら
順次ご返信させていただきます。

皆様、ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る