web-dev-qa-db-ja.com

PHPリンク解除が機能しない

Unlinkを使用してPHPの写真を削除しようとしています。以前に他のサーバーで使用しましたが、今回は機能しません。テストに絶対パスを使用しましたが、それでも機能しません。

私はそれを次のように使用しました:unlink( 'img1.jpg');

および:

unlink('http://www.mysite.com/img1.jpg');

そんな経験のある方はいかがですか?

8
Sunil

RLはulink関数では許可されていません

これ使って頂けますか

絶対パスを使用する方が安全です。ただし、このパスは動的に取得できます。

例えば。使用:

getcwd();

PHPスクリプトの場所に応じて、変数は次のようになります。

$deleteImage =  getcwd() . 'img1.jpg';

unlink($deleteImage);

これをチェックして

bool unlink ( string $filename [, resource $context ] )

そして

ファイル名
ファイルへのパス。

したがって、onlyはファイル名として文字列を取ります。

スクリプトを実行する場所からのパスでファイルに到達できることを確認してください。これは絶対パスの問題ではありませんが、相対パスのパスがある可能性があります。

6
Shakti Patel

Unlink()は現在URL( ここを参照 )をサポートしていますが、http://はサポートされていません: httpラッパー情報

ファイルシステムパスを使用してファイルを削除します。

3

LinuxまたはUNIXでunlinkを使用する場合は、 is_writable(string $ filename) の結果も確認する必要があります。関数がfalseを返す場合は、 fileperms(string $ filename)

ファイルパーミッションは、ウェブスペースでの通常の問題です。 ftpユーザーを使用してftpごとにファイルをアップロードし、Webサーバーが別のユーザーとして実行されている場合。

これが問題である場合、あなたはする必要があります

chmod o + rwd img1.jpg

または

chmod 777 img1.jpg

他のユーザーのアクセス許可をグランドライト(および削除)します。

2
Radon8472

ファイルシステムパスを使用し、
最初に次のようにパスを定義します。

define("WEB_ROOT",substr(dirname(__FILE__),0,strlen(dirname(__FILE__))-3));

ファイルが存在するかどうかを確認し、存在する場合はファイルのリンクを解除します。

$filename=WEB_ROOT."img1.jpg";
if(file_exists($filename))
{
$img=unlink(WEB_ROOT."img1.jpg");
}
1
DS9

unlinkはunlink('http://www.mysite.com/img1.jpg');では機能しません

代わりにunlink($_SERVER['DOCUMENT_ROOT'].'img1.jpg'); //を使用して、現在のディレクトリを取得するか、

unlink($_SERVER['DOCUMENT_ROOT'].'dir_name/img1.jpg');

ファイルパーミッションの問題がある可能性があります。これを確認してください。

0
Rajeev Ranjan

画像が保存されているフォルダからスクリプトを作成しているファイルまでの相対パスを指定します。ファイル構造が次のような場合:

-your php file
-images
  -1.jpg

then 

unlink(images/1.jpg);

または、フォルダのアクセス許可に問題がある可能性があります。あなたのファイルはサーバー上にありますか、それともローカルホスト上で実行していますか?サーバー上にある場合は、imagesフォルダーに755のアクセス許可を与えます。

0

unlink($fileName);が失敗しました。
次に、realpath($fileName)関数をunlink(realpath($fileName));として使用してみました。

誰かがそれが役に立つと思うなら、それを投稿するだけです。

php unlink

0
sameh salah