Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅在服务器调用PHP脚本时运行该脚本_Php_Apache - Fatal编程技术网

如何仅在服务器调用PHP脚本时运行该脚本

如何仅在服务器调用PHP脚本时运行该脚本,php,apache,Php,Apache,我有一个PHP脚本,只有在服务器本身调用它时才会运行。 如下所示:form().submit运行一个AJAX请求来发布表单数据。我不想开发一个哈希解码和编码系统来证明请求是否被允许 是否可以轻松检查“服务器运行脚本”或客户端是否希望运行脚本?如果没有,我可以使用.htpasswd如果您使用的是apache,您可以将脚本放在一个文件夹中,并添加一个包含以下内容的htaccess文件(.htaccess deny from all 这样,当用户试图直接访问php脚本时,他们只会得到一个被禁止的页面

我有一个PHP脚本,只有在服务器本身调用它时才会运行。 如下所示:form().submit运行一个AJAX请求来发布表单数据。我不想开发一个哈希解码和编码系统来证明请求是否被允许


是否可以轻松检查“服务器运行脚本”或客户端是否希望运行脚本?如果没有,我可以使用.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