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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

4回答

5289閲覧

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

Webuild

総合スコア5

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2019/09/05 01:17

前提・実現したいこと

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に移動しています。

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

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

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

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

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

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

m.ts10806

2019/09/05 01:34

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

回答4

0

ベストアンサー

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 01:31

編集2019/09/05 02:27
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Webuild

2019/09/05 01:45

ご回答ありがとうございます。 さっそく ディレクトリをもとの C:\ に戻したところ 動作しました。 OneDriveが使えないのはかなり痛いです。。。 突然使えなくなった原因はやはりWindows Updateでしょうか? もともと WEBとかサーバーとかFTPとかそれなに?美味しいの?なスタッフに WEBサイトを更新させるための苦肉の策でして・・・ ディレクトリとか覚えてくれないので エクセルなら触れるスタッフにマクロを作ってボタン押したら 自動でPHPコードを変更して保存する ・・・みたいな感じで運用していたのです。。。 とりあえずご提案いただいたバッチで処理する方向で検討してみます。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2019/09/05 01:51

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

2019/09/05 01:56

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

2019/09/05 11:52

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

0

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

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

投稿2019/09/05 01:24

m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2019/09/05 01:32

ユーザー権限下ではそこにあるように見えて、システム管理者権限下では読めない、よくある話のような気がします。
m.ts10806

2019/09/05 01:34

そうかもしれませんね。そこにあるように見えるだけで特殊な環境・状態であることは間違いないので、そこにWebRootを置くのは難しいと思います。 そもそもなんでデフォルトから変えたんだろう・・・。XAMPPインストールディレクトリから外に出すことってあんまりないと思ってます。
Webuild

2019/09/05 01:46

ご回答ありがとうございます。 やはり仮想ディレクトリでは突然こういった問題が発生することもあるのですね。 このやり方を思いついたときは俺 ネ申 だわ!とか思ってたんですけどね。。。 残念です。。。
Webuild

2019/09/05 01:52

ECサイトで更新作業はめちゃくちゃ多くて パートさんとかHTMLすらわからない人にも更新してもらわないと回らないような会社でして・・・ FTPとかでアップさせるのも結構難しくて できるだけその回数とか場所を減らすために あれやこれやと手を打っているのが現状です。。。 エクセルで 決められたフォームに文字列入れて ボタンを押すと PHPで作ったテンプレートファイルを更新して、で吐き出されたHTMLをコピーして各ECサイト(自前でないのでPHPは使えない )に更新かける(CSVあるいはFTP) ファイル更新の量が多いので 毎回サーバーアップとかだと骨が折れますしミスの温床にもなるので 自動で更新されるクラウドストレージはうまい手だとおもったんですけど。。。
m.ts10806

2019/09/05 01:55

「仮想」でしたらいっそのこと仮想サーバーをたててアクセスするのもありです。おそらく同じLAN内で作業されているのでしょうし、それならIPでURL実行する形になります。(あまり自身のローカルに色々置きたくないでしょうし)
退会済みユーザー

退会済みユーザー

2019/09/05 01:56

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

2019/09/05 01:56

>エクセルで 決められたフォームに文字列入れて ボタンを押すと PHPで作ったテンプレートファイルを更新して エクセルで入力しているようなことをWebから入力できるようにしたらひと手間減ると思います。そこもPHPで作ると。
Webuild

2019/09/05 11:45

>仮想サーバーをたててアクセスするのもありです。 別の事務所もありそちらとも同じファイルを共有しているのです。 なので手軽なとこでいくとWEBサーバーか、こういったクラウドかって感じの選択肢になります。 >例えばWinSCPとか。 調べてきました~半自動あるいは全自動のディレクトリ同期 も可能なんですね! FTPでアップしてるパートはこれに置き換えをTRYしてみたいと思います♪ 有益な情報ありがとうございます! >エクセルで入力しているようなことをWebから入力できるようにしたらひと手間減ると思います。そこもPHPで作ると。 エクセルの方が仕様変更とかUI部分とかにコストがかからないのと、 一遍に複数商品を作業するときとかの処理が楽にかけたり、コピペが楽だったり結構メリットが多いんです。マクロでほとんど自動化してますし♪ PHPでも作れるのは作れるのですけど、スキルなさからかマクロの倍くらい作成に時間かかってしまいます。。。
guest

0

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

投稿2019/09/05 02:00

QZX

総合スコア44

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

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

m.ts10806

2019/09/05 02:01

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

2019/09/05 11:58

ご回答ありがとうございます。 OneDrive上にXAMPPまるごとお引越しということですかね? 複数人で同時に使用することもあり、XAMPP本体が共有となるのはOneDriveの仕様的にもまずそうです>< なにかするたびにログのコピーが大量にできてしまことが懸念されますね>< 余談ですが setup_xampp.bat でぐぐってみたらXAMPP ポータブル版というのもあるのですね。 USBやNASとかにいれて使う用途でしょうかね。
guest

0

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

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

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

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

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

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

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

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

投稿2019/09/05 05:52

Webuild

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問