php - 如何使 php 脚本删除自身(包括目录)

标签 php security

<分区>

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

编辑:

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

我忘了提到它有它的“包含”目录,我也想将其删除...有人可以添加如何同时删除此目录吗? includes 目录是安装脚本所在文件夹的子目录。

最佳答案

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

unlink(__FILE__);

作为“证据”:

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

=> 文件存在

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

unlink(__FILE__);

=> 它包含我给的代码

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

=> 我启动脚本

squale@shark:~/developpement/tests/temp
$ ll | grep 'remove-myself.php'

=> 它不存在了


为此,您必须确保拥有所需的权限……这意味着尝试删除该文件的用户需要对包含该文件的目录具有访问权限。

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


虽然不确定它在 Windows 上是否可行......它在 Linux 上工作,但 Windows 可能会在执行文件时有点“锁定”文件......

关于php - 如何使 php 脚本删除自身(包括目录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1216755/

相关文章:

c# - 公开个人资料的可公开查看的 UserId

security - 是否有 OASIS KMIP 的引用实现?

security - "signing a certificate with another certificate"是什么意思?

hibernate - hibernate命名查询可以防止SQL注入(inject)攻击吗?

.net - basicHttpBinding 是将 .Net 2.0 客户端连接到 WCF 服务的唯一选项吗?

php - 由于 Yii 中的负载均衡器, Assets URL 不工作

php - 更改单个页面的链接颜色

php - 是否可以使用 cron 来代替 JavaScript 中的硬编码值?

php - JSON Ajax PHP MYSQL - 多条记录到 JSON

php - 解析 Skype 日志