注销时重命名文件
Posted
技术标签:
【中文标题】注销时重命名文件【英文标题】:Renaming a file on log out 【发布时间】:2014-04-12 01:41:08 【问题描述】:我正在尝试用 php 重命名一个文件,但由于某种原因它不起作用,我是否必须在 PHP 下激活一些特殊权限?
这是我的 php 文件代码
<?php
if(!rename('file.php','filer.php'))
echo "Couldn't rename file!";
else
echo "file renamed succesfully!";
?>
当他们退出登录区域时,我正在尝试重命名我的/var/www
目录中的文件,这样他们就无法访问回击按钮。我的代码有错误吗?还是有其他方法可以防止这种情况发生?
【问题讨论】:
错误报告是否设置为 E_ALL? 这听起来是个糟糕的主意...文件怎么会被改回来?其他访问者将如何访问该文件?为什么不在会话中存储一个布尔值$loggedIn
并在他们注销时销毁会话。检查每个页面以确保他们已登录,否则重定向到登录页面。
哦,天哪,是的,当我完全诚实地回答时,我没有阅读底部。这确实是一个糟糕的想法,原因有很多,你应该按照 Travesty 的建议去做。
@travesty 谢谢你的想法,我们要清楚,你的意思是当我验证用户和密码时,创建一个变量 $loggedin 并将它作为 $_POST 传递给其他页面?
不,不是 $_POST。阅读如何使用PHP sessions。
【参考方案1】:
此文件夹/var/www/
的默认权限为:chmod 755 /var/www/
“所有者读取、写入和执行”和“组和其他所有人读取和执行” (-rwxr-xr-x)
文件夹/var/www/file
内的文件为:chmod 644 /var/www/file
我不知道您是否更改了权限或只是执行此命令,我们会工作。
chmod 777 /var/www/file.php
“所有者、组和其他所有人读取、写入和执行”
【讨论】:
让每个人都拥有文件的写权限是不是有点不安全? 是的,但他必须寻找正确的权限。【参考方案2】:试试这个,然后......它会以新名称复制文件,然后他们会删除原始文件:
copy('file.php','filer.php');
unlink('file.php');
您不会尝试移动调用代码的文件,是吗?
【讨论】:
为什么这比rename()
更可取?
不是,我只是给了 OP 不同的代码来做同样的事情,以防万一它起作用。我没有时间处理配置文件之类的,我只是突然在网站上阅读一些内容,甚至没有打算回答任何内容。
如果是这种情况,我深表歉意,因为没有任何答案,我只是在途中提供了一个短暂的想法。好吧,至少人们现在可以阅读这些 cmets。【参考方案3】:
PHP 必须具有对该文件的写入权限。 (我假设你有一个 UNIX 系统)。首先通过运行以下命令找出 PHP 运行的用户身份:
echo `whoami`;
在 PHP 解释器中。 (在我的系统上是www-data
)。然后运行:
sudo chown www-data file.php
在 shell 中,与您想要的文件在同一目录中。当然,将www-data
更改为您系统上的PHP 用户。确保所有者具有写入权限。然后你就完成了; PHP 可以重命名这个文件。
【讨论】:
只是为了确保清楚,这些是围绕 whoami 的反引号,而不是引号。以上是关于注销时重命名文件的主要内容,如果未能解决你的问题,请参考以下文章
防止用户在从远程 ftp 服务器 cocoa 流式传输文件时重命名文件