こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPのエラーメッセージ

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 の中に置いてあります。
なぜこうなるのでしょうか?詳しい方、どうか教えてください。

投稿日時 - 2018-10-14 13:28:00

QNo.9547505

すぐに回答ほしいです

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

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

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

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

var_dump( $my_file );

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

投稿日時 - 2018-10-14 18:51:16

補足

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

投稿日時 - 2018-10-15 13:08:00

お礼

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

投稿日時 - 2018-10-15 03:52:53

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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の基本的なルールやセオリーが全く通用しなくなるので、ある程度の慣れと注意が必要です。

投稿日時 - 2018-10-14 15:21:06

お礼

早速にご回答いただき、有難うございます。
4017Bさんにはこれに関連する前の質問にも回答いただき、本当にお世話になっています。
アドバイス頂いた方法を二つとも試してみましたが、いずれもうまくいきませんでした。
PATHの記述など、XAMPPの使い方もよくわかってなかったみたいなので、自分でもよく勉強をして、解決の糸口を探したいと思います。

投稿日時 - 2018-10-14 16:29:59

あなたにオススメの質問