如何仅在服务器调用PHP脚本时运行该脚本
我有一个PHP脚本,只有在服务器本身调用它时才会运行。 如下所示:form().submit运行一个AJAX请求来发布表单数据。我不想开发一个哈希解码和编码系统来证明请求是否被允许如何仅在服务器调用PHP脚本时运行该脚本,php,apache,Php,Apache,我有一个PHP脚本,只有在服务器本身调用它时才会运行。 如下所示:form().submit运行一个AJAX请求来发布表单数据。我不想开发一个哈希解码和编码系统来证明请求是否被允许 是否可以轻松检查“服务器运行脚本”或客户端是否希望运行脚本?如果没有,我可以使用.htpasswd如果您使用的是apache,您可以将脚本放在一个文件夹中,并添加一个包含以下内容的htaccess文件(.htaccess deny from all 这样,当用户试图直接访问php脚本时,他们只会得到一个被禁止的页面
是否可以轻松检查“服务器运行脚本”或客户端是否希望运行脚本?如果没有,我可以使用.htpasswd如果您使用的是apache,您可以将脚本放在一个文件夹中,并添加一个包含以下内容的htaccess文件(.htaccess
deny from all
这样,当用户试图直接访问php脚本时,他们只会得到一个被禁止的页面。您只能通过服务器中使用的php脚本的include/require方法访问此处的文件 您可以通过以下步骤完成此操作 1)将php脚本放在web文档根目录之外,如
/usr/local/phpscript/
2)从您的代码运行此脚本,如
$output = shell_exec('php /usr/local/phpscripts/your_script.php');
通过这样做,只有服务器可以调用脚本。Web用户无法访问此php脚本以执行如果您只希望在执行
include()
脚本时执行脚本,则可以在include脚本中设置一个变量并在此脚本中进行检查
script1.php:
<?php
$my_call = true;
include('script2.php');
用户代理可用的脚本必须在docroot中,否则它们将完全不可用。假设这是项目的结构:
public_html/
|-- index.php
src/
|-- somefile.php
假设您的文档根目录设置为
public_html
目录(通过vhost配置),则用户代理无法访问src
中的文件。因此,只有服务器可以通过在其他脚本中要求它们来运行它们。将其放在docroot之外,用户将无法使用它。只有服务器才能运行它。如果您知道服务器的IP地址,您可以将其与请求IP进行比较?可能重复:尽管@mingos似乎有一个更直接的答案否,但这禁止除命令行访问之外的任何访问脚本的权限。我将你的评论标记为无用,希望你能自己删除。好的,==代码>,我读作==
,我的坏。不过,答案并不是OP所要求的。这反过来又不会让CGI运行脚本。不建议将其限制为任何给定的SAPI名称,因为您最好在Apache下使用“apache2filter”作为您的SAPI名称,并且Nginx甚至php cli
SAPI(php的内置Web服务器)都绝对无法运行此功能。我们不确定OP想要什么。我现在编辑了它,希望它涵盖了所有内容。:)
<?php
if(php_sapi_name() !== 'cli'){die('Access denied.');}
// your code next
[root@xxxxx html]# cat test.php
<?php
echo php_sapi_name();
[root@xxxxx html]# php test.php
cli
apache2handler
public_html/
|-- index.php
src/
|-- somefile.php