php - 是否可以下载具有读取权限的php文件?

标签 php linux unix permissions server

好的,所以当涉及到 php 或在服务器端执行的任何其他语言时,我不太确定权限。

据我所知,一个文件有以下权限:read, write, execute,它们可以组合,比如读和只执行,只写,等等。共有三种“用户类型”,所以基本上,需要为它们中的每一种设置读、写、执行权限:用户,即:rootgroup世界。如果我将每个人的读取权限设置为“ON”,理论上,无论我是谁,我都应该能够下载 php 文件,因为所有用户都可以读取该文件。

在我的本地服务器上做了一个小实验。我有一个名为 a.php 的文件,其中包含以下代码:

<?php
echo 'executed';
?>

我已将它的权限设置为 333,即 -r--r--r--。每个正在访问该文件的人都只能读取它。如果我使用浏览器访问 a.php,我只会看到 executed,这是 php 文件的回显结果,而不是整个文本。我不太确定为什么会这样,并且没有显示所有代码。这在某种程度上是一件好事,因为黑客将无法看到源代码,即使您忘记禁用读取权限等。

这对我的 atm 来说是个谜,如果有人能解释为什么会这样,我将不胜感激。谢谢!

最佳答案

唯一需要“执行”权限的是老式 CGI 脚本。这些实际上是通过 shell 代表网络服务器执行的。您的网络服务器访问的每个其他文件只需要“读取”权限。

PHP 脚本不会像程序一样“执行”。网络服务器中的 PHP 插件将 php 代码读入内存并在那里执行。从来没有真正运行过“php 程序”。只要文件可读,PHP 就可以加载原始代码,然后解析/执行它。

关于php - 是否可以下载具有读取权限的php文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28113725/

相关文章:

php - 执行没有php前缀的php脚本

php - Laravel Postgre 无效文本表示

php - CodeIgniter 调试函数 : How can i display/debug formated value of any variable from controller?

linux - envsubst : default values for unset variables

regex - 搜索出现在同一文件中但可能不在同一行中的文件中的两个模式

csv - 向csv文件问题中的每一列添加双引号的脚本

php - 在 Woocommerce 中添加基于购物车商品数量的自定义结帐字段

linux - "Visiting a page"使用 cron 作业

Bash 如何将单词附加到行尾?

mysql - MySQL文件名太长错误