我不确定它的正确名称,但我在Linux服务器上的Bash脚本中执行PHP代码。我有两个这样的Bash文件,并希望能够将GET变量从一个文件传递到下一个文件。
以下是第一个文件的简化版本:
#!/usr/bin/php -q
<?php
require("bash2.sh?id=1");
以下是第二个文件的简化版本:
#!/usr/bin/php -q
<?php
echo $_GET['id'];
目前,当我在Crontab上执行第一个文件时,出现错误信息:
PHP警告:require(bash2.sh?id=1):无法打开流:没有这样的 第2行/home/bash/bash1.sh中的文件或目录
如果我从?id=1
中移除require()
,则会执行该错误。
答案 0 :(得分:2)
你在思考网络......
您放在require
中的是PHP引擎要查找的实际文件名
使用操作系统。即它查找一个名为bash2.sh?id=1
的文件,你显然没有。
要么使用system('./bash2.sh 2');
来调用另一个脚本
或者,包括,并使用以下方法传递数据。
文件1
<?php
$id = 1;
require("bash2.sh");
file2的
<?php
echo $id;
如果你使用第一个例子(system('./bash2.sh 2');
)那么在bash2.sh中你将以下列方式访问变量:
<?php
echo $argv[1]; //argv[0] is the script name
答案 1 :(得分:2)
您无法将参数添加到硬盘上的静态文件中。但是您可以定义一个可由需要的脚本访问的全局变量。
<?php
$id=1
require("bash2.php");
和你的bash2.php:
<?php
echo $id;
答案 2 :(得分:1)
没有人应该使用参数。当你执行php脚本(我在cron作业中猜测)时,你添加了像some.php variable1 variable2
.....等等的参数,
然后在php中使用$argv[0], $argv[1] .... etc
获取该变量。
这是从bash脚本开始的方式。
答案 3 :(得分:0)
尝试这样的事情:
<?php
$id = $_GET['id'];
exec("./bash2.sh $id");
?>
然后在bash脚本中,您将能够访问作为$ 1传递的第一个参数。
希望这有帮助!