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/

相关文章:

PHP - 无法显示完整的结果集,只能显示第一个

php - 在数据库中存储复选框值并读取它们

php - 正则表达式获取 XML 标签之间的内容

android - 我只能在某些版本的 Android 中需要权限吗?

php - 在 PHP 7 Ubuntu 14.04 上调用未定义函数 mb_strlen()

php - 模拟 LiveHTTPheaders 服务器端

security - 为什么在身份验证期间使用 JWT 刷新 token 可以防止 CSRF?

ruby-on-rails - 如何嵌入Haml的错误::Engine in a web page in production on Heroku

security - 通过电子邮件发送临时密码重置密码

c++ - SSLSniff错误: "SSL Accept Failed"