解決済み

PHPのエラーメッセージ

  • すぐに回答を!
  • 質問No.9547505
  • 閲覧数42
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 88% (306/344)

HTML文書からPHPに送ったファイル名のついたファイルをunlink()関数で削除しようとしているのですが、添付したスクリーンショットのようなエアーメッセージが出てきて進めません。
PHPのコードは下のようなものです。
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> QAdeleteFile.php</title>
</head>
<body>
<?php
$FileName=$_POST["deleteFileName"];
$FileName="C:\\xampp\\htdocs\\".$FileName;
echo $FileName ;
unlink($FileName);
echo "<form id='next' method='POST' action='QAgmeOver.php' >";
echo "<input type='submit' value='call QAgameOver' >";
echo "</form>";
?>
<!--
<script type="text/JavaScript">
window.document.getElementById("next").submit();
</script>
-->
</body>
</html>

エラーメッセージで言っているQAgameOver.phpというのは上に挙げたコードのプログラムです。このメッセージでは、PHP はそのファイルをこのプログラムの中で探そうとしているように見えますが、そのファイルは当然ローカルサーバーのルートであるhtdocs の中に置いてあります。
なぜこうなるのでしょうか?詳しい方、どうか教えてください。

質問者が選んだベストアンサー

  • 回答No.2

ベストアンサー率 69% (863/1248)

他カテゴリのカテゴリマスター
あ~やっぱり…回答を書いてて何となく失敗するんじゃないかと思ってました。PATH問題は初心者がハマりやすい落とし穴なんで。

とりあえず問題点を明らかにするため、以下のコードを書き足して実行させてみてください。

$my_file = $_POST['deleteFileName'];
$my_file = $_SERVER['DOCUMENT_ROOT'].'/'.$my_file;

var_dump( $my_file );

これでPHPプログラム内部で $my_file にどんなURL(PATH)が格納されているかが分かります。それを確認した上で、実行するPHPコード内でどの様にURL等を加工すれば良いのかの方針が見えて来ます。
補足コメント
papashiroSooke

お礼率 88% (306/344)

お礼コメント欄でお願いした、「そんなファイルは存在しない」メッセージの消し方については、それを無視して次のページに行くようにしましたので、お忘れください。
色々有難うございました。
投稿日時 - 2018-10-15 13:08:00
お礼コメント
papashiroSooke

お礼率 88% (306/344)

何度もお世話いただき、有難うございます。
アドバイス頂いた3行を挿入したところ、ファイルは削除されました。
var_dump()関数の結果も思った通りのファイルパスになっています。
しかし不思議なことに、「そんなファイルは存在しない」旨のメッセージ
がまだ出てきます。後はこれを消す方法がわかればよいのですが、何かアイデアはございますか?お手数をかけて申し訳ありませんが、ご存知でしたらよろしくお願いいたします。
投稿日時 - 2018-10-15 03:52:53
たいせつな将来のこと。あえて、知らない人に聞いてみよう。

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 69% (863/1248)

他カテゴリのカテゴリマスター
XAMMP内部でのパスが単純に通ってないだけですね。

- Windows上でのファイルPATH: - "C:\\xampp\\htdocs\\hoge\\abc.jpg"
- XAMPP上でのファイルPATH: - "http://localhost/hoge/abc.jpg"

~みたいになるので。

とりあえず、

$FileName = $_SERVER['DOCUMENT_ROOT'].'/'.$FileName;

~と修正して試してみてください。それでダメだったら、

$FileName = __DIR__ .'/'. $FileName;

~とかも試してみてください。

P.S.
XAMMPはWindowsやMacなどのUNIX系以外のOS上に仮想Linux(UNIX)環境を構築してエミュレートする総合ソフト環境です。従ってXAMMP内ではXAMMPが支配するLinuxのルールに従って全てを処理して行く必要があります。XAMMP、もといLinux環境でのファイルのPATHは httpdocs の設定に依存しますので、これらを用途に応じた適切で正しい設定を記述し編集出来る知識と能力が必須となります。Windowsの基本的なルールやセオリーが全く通用しなくなるので、ある程度の慣れと注意が必要です。
お礼コメント
papashiroSooke

お礼率 88% (306/344)

早速にご回答いただき、有難うございます。
4017Bさんにはこれに関連する前の質問にも回答いただき、本当にお世話になっています。
アドバイス頂いた方法を二つとも試してみましたが、いずれもうまくいきませんでした。
PATHの記述など、XAMPPの使い方もよくわかってなかったみたいなので、自分でもよく勉強をして、解決の糸口を探したいと思います。
投稿日時 - 2018-10-14 16:29:59
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ