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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

467閲覧

AWSのLightSail上でPHPのunlinkでファイルが消せない

PhysConsultant

総合スコア10

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/03/05 18:37

AWS LightSail上でPHPの勉強を行なっています。
PHPでunlink操作でファイルを削除することが目的なのですが、
権限がないとのエラーコードが出てきて、削除が行えません。

該当部分

<?php fclose('test.txt'); ini_set( 'display_errors', 1 ); if(unlink('test.txt')){ echo "削除OK"; }else{ echo "削除だめ"; } ?>

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

Warning: unlink(test.txt): Permission denied in /opt/bitnami/apache2/htdocs/benkyo.php on line 4

form1.phpで削除ボタンを押すと、同じディレクトリにあるbenkyo.phpが
test.txtを消す上記のスクリプトを実行するが、エラーメッセージと”削除だめ”が
表示される。test.txtが存在しないとかtest.txtをfcloseしてないだとかは
試したので可能性として別のことが考えられると思う。

試したこと

削除対象のtest.txtの777にしても削除はできなかった。
親ディレクトリ全体の権限を777にしても消せなかった。
htdocs内のファイル削除の可否がどこかで規定されているのかと
考えて探して見たが、よくわからなかった。

unlinkでファイルを

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

512 MB RAM、1 vCPU、20 GB SSD
LAMP (PHP 7)

よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2019/03/06 02:00

display_errorsの設定場所はプログラム冒頭でないと意味がありませんので、記述位置を変えて再度試してください
guest

回答1

0

fcloseの使い方が間違っています。fcloseはファイルをクローズさせるものですが、引数に入るのはfopenの時に取得したポインタです。
fclose

ですので、fcloseさせていない状態で、unlinkしようとしているのでエラーが表示されているのだと思います。それを確認するために、本当にクローズされたかどうかをfcloseの戻り値を代入して判定させてみてください。

PHP

1$fp= fopen('test.txt', 任意のモード); 2$flg = fclose($fp); //ファイル名を入れるのではない 3if($flg){ 4 unlink('test.txt'); 5}else{ 6 echo "ファイルが閉じていません"; 7}

投稿2019/03/06 00:50

編集2019/03/06 00:52
FKM

総合スコア3608

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問