我有几个 php 文件,旨在仅从计划任务运行。我不希望任何人通过在浏览器中输入 URL 或其他方式访问这些文件... 有没有办法让此文件仅供计划任务访问?我使用 plesk 控制面板...
答案1
答案2
如果您的计划任务使用命令行 php,那么您可以使用 htaccess 来禁止访问您的 php 文件所在的目录(或 php 文件本身)。
htaccess 块看起来类似于:
<Files yourphpfile.php>
order allow,deny
deny from all
</Files>
只需将其放入包含 php 文件的目录中的 .htaccess 文件中即可。
答案3
您只需将相关文件放在 DocRoot 之外即可(例如,放在/home/yourusername/cronscripts
而不是/home/yourusername/public_html/cronscripts
)。这样您的 Web 服务器就无法访问文件*。
.htaccess
也是一种常用方法,并且比第一种方案更有优势,即使您不使用命令行 PHP 来触发作业,它也能正常工作。通常,您会使用Allow
和Deny
语句来限制哪些源 IP 地址可以到达给定的代码段。
作为最后的选择,或者如果您需要从多个位置或 IP 地址不断变化的位置访问脚本,请考虑使用共享密钥,通过如下代码:
if ( !isset($_GET['secretpass'])
|| $_GET['secretpass'] != 'hmAPcrkqjDhMkJw' )
{
//Try to be fancy ("HTTP" response is for mod_php, "Status:" is for FastCGI)
header("HTTP/1.1 404 Not Found");
header( "Status: 404 File Not Found" );
exit(0);
//Or, if you'd rather, you can just:
die( "Unauthorized access." );
}
然后,当你调用脚本时,只有你知道要添加到末尾的正确参数(http://somehost.com/somescript.php?secretpass=hmAPcrkqjDhMkJw)。
*:当然,除非您明确设置单独的脚本或符号链接来执行此操作,但现在我们只是在吹毛求疵。