允许 Apache 执行 python 脚本,但不能在浏览器中读取

问题描述 投票:0回答:1

我有一个网站,它使用 python 脚本从单独的实体获取信息。由于使用的库和其他实体的结构,需要 python 脚本。检索到的信息将在网站上以各种方式使用。

网站本身是在 Apache 上运行的 PHP,并且有一个部分启动 python 脚本。显然,作为 Apache 服务器,Python 脚本是由 Apache 启动的,因此该脚本必须可由 Apache 使用/读取。

问题是,如果用户转到脚本的位置(即

www.mysite.com/scripts/myscript.py
),则可以通过浏览器查看代码。

是否可以设置权限,让Apache可以继续使用该脚本,但是在浏览器中直接访问该脚本时,无法查看代码?我也同意将脚本更改为不易阅读(也许会混淆它?)。

我尝试更改

.htaccess
文件以不允许读取该目录中的文件,但是虽然它在尝试查看时确实会定向到 403 页面,但它会阻止 Apache 使用该脚本。我还更改了文件的权限以允许 Apache 执行该文件,但不读取它...这似乎阻止了 Apache 从脚本中读取结果。

有什么想法吗?


编辑1: 我认为应该注意的是,Python脚本是由PHP通过exec命令:

exec("$cmd > /dev/null 2>&1 & echo $!;")
启动的,其中
$cmd
是要执行的命令。这可能是也可能不是这里的最佳用例。如果有另一种方法可以让 PHP 启动 python 脚本并从脚本中获取结果,我愿意接受这种替代方案。

python php apache web
1个回答
0
投票

你想多了。请注意如何调用 Python 脚本:

Python 脚本由 PHP 通过 exec 命令启动:

exec("$cmd > /dev/null 2>&1 & echo $!;")
,其中
$cmd
是要执行的命令。

具体是什么

$cmd
?服务器可以在文件系统上的任何位置执行脚本。它不需要位于 Apache Web 根目录中,而且确实与 Apache 无关。

只需将其放在文件系统上网站之外的其他位置即可。

© www.soinside.com 2019 - 2024. All rights reserved.