如何让php脚本自行删除(并包含dir)

Phi*_*hil 7 php security

如何在完成工作后自行删除脚本?

编辑:

这是我的安装脚本,我希望它出于安全原因删除自己(因此攻击者将无法覆盖现有站点).

我忘了提到它有'包含'目录,我也想删除... 有人可以添加如何删除这个目录?includes目录是安装脚本所在的同一文件夹的子目录.

Pas*_*TIN 12

您可以使用unlink删除文件,并__FILE__获取当前文件的完整路径:

unlink(__FILE__);
Run Code Online (Sandbox Code Playgroud)

作为"证据":

squale@shark:~/developpement/tests/temp
$ ll | grep 'remove-myself.php'
-rw-r--r-- 1 squale   squale      25 2009-08-01 17:01 remove-myself.php
Run Code Online (Sandbox Code Playgroud)

=>该文件存在

squale@shark:~/developpement/tests/temp
$ cat remove-myself.php
<?php

unlink(__FILE__);
Run Code Online (Sandbox Code Playgroud)

=>它包含我给出的代码

squale@shark:~/developpement/tests/temp
$ php ./remove-myself.php
Run Code Online (Sandbox Code Playgroud)

=>我启动脚本

squale@shark:~/developpement/tests/temp
$ ll | grep 'remove-myself.php'
Run Code Online (Sandbox Code Playgroud)

=>它不再存在


为此,您必须确保您具有所需的特权...这意味着尝试删除文件的用户需要在包含它的目录上具有正确访问权限.

当你在命令行,它通常是好的; 但如果您尝试通过Apache执行此操作,则需要授予Apache对该目录/文件的写访问权限 - 默认情况下,Apache通常不具有此类权限(不安全,通常不需要)


不确定它是否可以在Windows上运行,但是......它适用于Linux,但Windows可能会在执行时"锁定"文件...


Gla*_*bot 4

尝试取消链接。网络服务器用户需要目录/脚本的写入权限。