使用SSH调用PHP文档包括get变量
我从一个cron作业调用的PHP文档中有以下内容使用SSH调用PHP文档包括get变量,php,ssh,system,require-once,Php,Ssh,System,Require Once,我从一个cron作业调用的PHP文档中有以下内容 if (is_file($docRoot . $row['cron_action_script_path'])) { system("php " . $docRoot . $row['cron_action_script_path'] . $row['params']); } 但是,我遇到了一个错误无法打开输入文件:/path/to/file.php?params=1 但是我已经通过了if语句is_file('/path/to/fil
if (is_file($docRoot . $row['cron_action_script_path'])) {
system("php " . $docRoot . $row['cron_action_script_path'] . $row['params']);
}
但是,我遇到了一个错误无法打开输入文件:/path/to/file.php?params=1
但是我已经通过了if语句is_file('/path/to/file.php')
因此,在对PHP文档的SHH调用中包含get变量似乎有问题
这有什么关系吗?我需要能够以某种方式动态调用我的参数。尝试
是可读的
而不是是文件
。文件可以存在而不被当前用户读取
不过,像那样传递参数是行不通的。您不能在命令行中获取变量。查看。您正在调用php CLI,并试图使用特定于Web服务器的
查询字符串。您需要修改脚本以接受参数,或者使用程序调用它,例如lynx
、curl
或wget
因此,让系统调用如下内容:
system("wget http://yourdomain.com/path/to/file.php?params=1 > /dev/null");
然后应该使用允许查询字符串的webserver执行该脚本
编辑:
为使用变量而定制:(注意.com后面可能需要一个斜杠)
发布cron作业的命令。我知道该作业工作正常。我通过在没有参数的情况下运行(即system('php path/to/file.php')
)进行了确认,并得到了正确的响应。问题不一定是检查它是否是一个文件,而是将参数传递给该文件。当您键入该注释时,我在编辑中解决了这个问题。见上文。你能详细说明一下“修改剧本”吗?我还尝试使用您列出的程序进行系统调用(按顺序):Alert!:无法访问文档。lynx:无法访问startfile
,curl:(3)格式错误
,不受支持的方案。
对于修改,您只需重写即可接受参数,有关如何处理的链接,请参阅ceejayoz的帖子。至于你的lynx等,似乎你有一个坏的url,如果你可以发布你运行它的代码,我可以帮助你修复错误。这看起来很有希望,但我有一个.htaccess阻止访问该文件的目录。内部没有办法吗?看看榴弹中校的帖子。他的方法可以在内部完成,只是可能需要对其进行一些裁剪。根据OP的代码,似乎$row['params']
包含?params=1
(其他行可能包含更多字段),因此他将有更多的工作要做。我认为这可以工作,但$row['params']
是一个字符串,可以是?id=1
到?id=1&foo=2&bar=3
的任意位置,因此我必须重新分析$\u GET['params']
?也许吧?@stevether:是的,parse_str是个不错的选择。
system("wget http://yourdomain.com" . $row['cron_action_script_path'] . $row['params'] . " > /dev/null");
if (is_file($docRoot . $row['cron_action_script_path'])) {
$_GET['params'] = $row['params'];
include $docRoot . $row['cron_action_script_path'];
}