我有几个PHP文件,旨在只从计划任务运行。 我不希望任何人通过在浏览器或其他方式inputurl来访问这些文件…有没有办法让这个文件只能用于计划任务? 我使用plesk控制面板…
你想用一些规则创build一个.htaccess文件来限制对这些文件的访问。 这会影响到Apache通过http服务文件,但不会影响本地服务器和像运行PHP代码访问文件的东西。
Apache文档中有关于Files块的详细信息,以及这里的deny指令 。 Anthonysomerset在他的回答中打败了我。
如果您的计划任务使用命令行PHP,那么您可以使用htaccess来禁止访问您的PHP文件所在的目录(或PHP文件本身)。
一个htaccess块将看起来类似于这样的:
<Files yourphpfile.php> order allow,deny deny from all </Files>
只要把它放到你的php文件目录下的.htaccess文件中即可。
您可以简单地将文件置于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 )。
* : 除非你明确地build立了一个独立的脚本或符号链接,当然,但现在我们只是迂腐了。