Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
使用SSH调用PHP文档包括get变量_Php_Ssh_System_Require Once - Fatal编程技术网

使用SSH调用PHP文档包括get变量

使用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

我从一个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/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'];
}