• 締切済み

unlink「許可がありません」となり、消せない・・・

PHP初心者です。 PHP4.2xです。 サーバーにアップしてあるログファイル(data.log)をPHPの操作で削除したいのですが・・・ $file = './data.log'; unlink($file); で消そうとすると、 Warning: unlink(./data.log): 許可がありません in /home/xxxx/xxxx/xxxx.com/httpdocs/xxxx/test.php on line 6 と表示されます。 ファイルのパーミッションは777にしています。 おそらくphp.iniの設定かセーフティモードがどうのこうのじゃないかなぁ・・・とは思っていますが、具体的にはどこをどうしたらいいのか分かりません。 どなたかアドバイス頂けないでしょうか・・・? どうぞよろしくお願いします!!

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.1

ファイルパーミッションもそうですが、そのファイルが置かれているディレクトリにパーミッションはありますか? かつ、そのディレクトリの所有者は誰になっていますか? 他のユーザーのファイルは消せないので、そのディレクトリ、及びファイルは、Apacheを起動しているユーザー(apacheやnobody等)の所有である必要があります。

関連するQ&A

  • unlink が余計に働いてエラーメッセージ

    お世話になります。 PHPを学んでいるものです。 開発環境は、Pleiades3.5のPHPを使っています。 やりたいことは、画像データのアップロード後の仮置きファルダの掃除です。 しかし、以下のコードでやると、「Warning: unlink(images/upload/.) [function.unlink]: Permission denied in C:\xampp\htdocs\root\manager_item_edit03.php on line 530」が2つ出てきます。 if( $handle = opendir(PRE_IMAGE_DIR) ){ while( ($file=readdir($handle)) == true ): if( file_exists(PRE_IMAGE_DIR.$file) ){ unlink(PRE_IMAGE_DIR.$file); } endwhile; closedir($handle); } ただ、目に見えるファイル(事前に無駄なファイルをいくつか置いてみました)はすべて削除されています。つまり、私から見ると、unlinkが余計に働いたことでエラーが出ている状況です。 念のため、unlinkの前に下記のコードを挿入して、何のファイルか見てみたところ、「.」、「..」というピリオド(!?)だけのファイル名があるようです。 ?> <pre> <?php echo $file; ?> </pre> <?php 皆様で、このエラーを回避する方法や、そもそも何のファイルなのか、ご存知であればご教示をください。お願いします。

    • ベストアンサー
    • PHP
  • レンタルサーバでのPEAR

    レンタルサーバでPEARを使用しようとしてます。 PEAR自体はインストールされていますが、新規のパッケージをインストールすることができないため、ネットで調べて下記のようにしています。 PEARのCaledarパッケージを /home/xxxx/PEARにコピー (開発環境で使用したパッケージです) PHPのソースにて ini_set('include_path','.:/home/xxxx/PEAR'); include '/Calendar/Month/Weekdays.php'; として実行したところ Warning: include(/Calendar/Month/Weekdays.php) [function.include]: failed to open stream: No such file or directory in /home/xxxx/public_html/php/schedule.php on line 4 Warning: include() [function.include]: Failed opening '/Calendar/Month/Weekdays.php' for inclusion (include_path='.:/home/xxxx/PEAR') in /home/xxxx/public_html/php/schedule.php on line 4 と出てしまいます。 確かにパッケージは存在するのですが・・・・ 参考になるサイトでもかまいませんので、うろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ファイルの削除について ( unlink )

    perl プログラミング 2日目の初心者です。 以下のようなスクリプトを書いて test.cgi とかで $del_count = unlink glob("msg-*.txt"); 保存し、ブラウザーでアクセスすると、ちゃんと ファイルが削除されるのですが、 シェル上で実行すると、以下のようなメッセージ glob failed (child exited with status 1) at test.cgi line 5. とか出て削除ができないのです。 パーミッションも 755 とかで試したのですが、 どうしてなのでしょうか・・・うんうん煮詰まって います。

    • ベストアンサー
    • CGI
  • phpでディレクトリが作れません

    php初心者です レンタルサーバで php.iniはいじれない環境です、 ディレクトリを作ろうとすると Warning: mkdir(testdir) [function.mkdir]: File exists in /home/xxxx/public/www/php/mkdir.php on line 14 とエラーが出ます <? $chk = mkdir("mydir"); $chkr = mkdir("mydir_r", 0777); // 読み込みのみを許可 if ($chk) { echo "mydir を作成しました。 <br>\n"; } if ($chkr) { echo "mydir_r を作成しました。<br>\n"; } ?> 間違ってますでしょうか ご指導願いたいです

    • 締切済み
    • PHP
  • PEARのインストール方法

    レンタルサーバーにPEARをインストールしたいのですが エラーが表示され途中で止まってしまいます。 サーバーはxbitでApache/2.0.46,PHP 4.3.9,mysql 4.1.20です。 試した方法は以下の通りです。 1:http://pear.php.net/go-pearをgo-pear.phpとして保存 2:httpdocs/gooo_pear/go-pear.phpとしてサーバーへアップ 3:ブラウザからhttpdocs/gooo_pear/go-pear.phpにアクセス 4:httpdocs/gooo_pear/のパーミッションを777に変更 5:NEXTをクリックしパラメーターの変更をしていない状態で 最下部のインストールボタンをクリック するとページ上部に Warning: putenv(): Safe Mode warning: Cannot set environment variable 'TMPDIR' - it's not in the allowed list in /home/httpd/vhosts/ドメイン.com/httpdocs/go_pear/go-pear.php on line 1264 と表示されローディングバーの下に Warning: putenv(): Safe Mode warning: Cannot set environment variable 'TMPDIR' - it's not in the allowed list in /home/httpd/vhosts/ドメイン.com/httpdocs/go_pear/go-pear.php on line 1264 と表示されローディングバーが40%になると Fatal error: Cannot redeclare class pear_command_common:pear_command_channels in /home/httpd/vhosts/ドメイン.com/httpdocs/go/temp/PEAR/Command/Channels.php on line 43 と表示されストップしてしまいます。 何度か試してみたのですが結果は同じでマニュアルにも 目を通してみたのですが原因がわかりませんでした。 xbit側でpearは使えるようなのですがライブラリが限られており 独自でインストールしたく思っております。 エラーメッセージを調べてみても英語のページが何件か見つかる 程度で情報が得れなく初めてなものでどうしていいものか全く わからずです^^; 詳しい方がおりましたら宜しくお願い致します。

    • 締切済み
    • PHP
  • phpでファイルが削除できない

    こんにちは。 ファイル名の書かれたdir.txtを開いて、その中から1日以上経過したファイルを削除するtime.phpを作成しようと思っています。 実行してみると、24時間経過したファイルがあっても 「Warning: unlink() [function.unlink]: Permission denied in C:\Program Files\xampp\htdocs\test\time.php on line 33」 というエラーがでて削除できない 実行結果にprintするように指定していない$imaの数値「1128673152」が表示される。 のですが、どこに間違いがあるのでしょうか? time.phpの内容 ---------------------------------------------------------------------- <html> <body> <?php // ファイルを読み込み専用でオープンする $fp = fopen('dir.txt', 'r'); // 終端に達するまでループ while (!feof($fp)) { // ファイルから一行読み込む $line = fgets($fp); $line = rtrim($line); // ファイルの更新時間を調べる $kousin = filemtime("$line"); // 今の時刻 $ima = time(); // 経過時間を計算する $keika = $ima - $kousin; // 出力する print $line; print "<br>\n"; print $ima; print "<br>\n"; print $kousin; print "<br>\n"; print $keika; print "<br>\n"; clearstatcache(); if ( $keika > 86400 ) { unlink( "$file" ); } } // ファイルをクローズする fclose($fp); ?> </body> </html> ----------------------------------------------------------------------

    • ベストアンサー
    • PHP
  • 「CGIモード」から「モジュールモード」のサーバーに移したら動きません

    「CGIモード」から「モジュールモード」のサーバーに移したら動きません。 すみません。お願いします。エラーログは下記です。 PHP Notice: Undefined variable: page in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 141 PHP Notice: Undefined variable: search_param in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 152 PHP Notice: Undefined variable: inq_param in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 152 PHP Notice: Undefined variable: did_param in /var/www/vhosts/examplee.com/httpdocs/db/connect.inc on line 152 PHP Notice: Undefined variable: search_flg in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 152 PHP Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 156 PHP Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to www.example.jp:80 (Unknown error) in /var/www/vhosts/example.com/httpdocs/db/connect.inc on line 156 変数に値が入らず、必要なアドレス?が引っ張れず、相手(www.example.jp)とやり取りできない・・・的なエラーでしょうか。 フリーのDB(www.example.jp)をコチラ(example.com/db/)に表示させるやり取りは下記です。 ・detail.php ・index.php ・inquiry.php また記述は共に同様で下記となります。 <?php $param = '発行されたパラメータ'; $charset = 'shift-jis'; $gflg=false; $to_file = '自身のファイル名'; include ("connect.inc"); ?> サーバー環境の話で、お門違いかもしれませんが、助けていただければと思い書き込みます。

    • ベストアンサー
    • PHP
  • warningを画面に表示させない設定方法

    EC-cubeというPHPで作られたECパッケージを使用しているのですが、 ワーニングメッセージが画面に表示され困っています。 以下のようなワーニングです。 Warning: reset() [function.reset]: Passed variable is not an array or object in /home4/fsss/public_html/hssss-shop/data/class/helper/SC_Helper_PageLayout.php on line 63 Warning: Variable passed to each() is not an array or object in /home4/fsss/public_html/hsssss-shop/data/class/helper/SC_Helper_PageLayout.php on line 64 ワーニングなので画面時表示されるのではなくログファイル等に書き込みもしくは表示しないように設定したいのですが、PHPでログの出力先、ログレベルはどこでどのように設定しているのでしょうか? PHPはど素人です。宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • function()を初めて使いました。エラー。

    かなり初歩的な質問をさせていただきます。 初めてfunction関数を使ったのですが、下記のようなエラーが出ました。 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\logpage.php on line 99 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\logpage.php on line 100 Warning: array_reverse() [function.array-reverse]: The argument should be an array in E:\Web\Chat2\chat\function.php on line 38 Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 41 Warning: fputs(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 48 Warning: flock() expects parameter 1 to be resource, boolean given in E:\Web\Chat2\chat\function.php on line 49 Warning: fclose(): supplied argument is not a valid stream resource in E:\Web\Chat2\chat\function.php on line 50 チャットを作っていて、何度も使う文をfunctionでまとめて、別ファイルに保存し、 requireで呼び出して、str();で使うとこうなりました。 function load(){ $log_data = "./data/log".$_GET['id'].".cgi"; $log_file = file($log_data); $member_data = "./data/member".$_GET['id'].".cgi"; $member_file = file($member_data); } このような形で使っているのですが、何かfunctionを使うにあたって注意などがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • レッツPHP!さんのダウンロードカウンタが動かない

    レッツPHP!さんのダウンロードカウンタが動きません。 http://php.s3.to/data/#dl ここのダウンロードカウンタが使いやすそうなので、 ダウンロードして、アップロードして パーミッションも変更したのですが いざ登録して、ダウンロードの管理画面を開くと Warning: Division by zero in /home/users/0/lolipop.jp-dp05146405/web/dl/dl.php on line 223 とエラーが出てしまいます。 パーミッションを変更したはずなのに、すぐに元に戻ってしまいますし… サーバーによっては使えないとあったのですが、そのせいでしょうか? ちなみに、サーバーはロリポップさんを利用しています。 初心者なので、dl.php?dl=[ファイルID]の設定方法も良くわかりません。 初心者的な質問で申し訳ありませんが、 どなたかご存知の方、教えていただけないでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう