我做了一个运行php脚本的bash脚本。没有参数它工作正常,但当我添加参数(id和url)时,有一些错误:
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf .d/mcrypt.ini on line 1 in Unknown on line 0
Could not open input file: /var/www/dev/dbinsert/script/automatisation.php? id=1
我从bash运行php脚本:
php /var/www/dev/dbinsert/script/automatisation.php?id=19&url=http://bkjbezjnkelnkz.com
答案 0 :(得分:30)
将其命名为:
php /path/to/script/script.php -- 'id=19&url=http://bkjbezjnkelnkz.com'
另外,修改PHP脚本以使用parse_str():
parse_str($argv[1]);
如果未设置索引$_SERVER['REMOTE_ADDR']
。
更高级的处理可能需要getopt(),但parse_str()是让它运转起来的快捷方式。
答案 1 :(得分:6)
您无法将GET查询参数传递给PHP命令行界面。将参数作为标准命令行参数传递并使用$argc
and $argv
globals来读取它们,或者(如果必须使用GET / POST参数)通过curl / wget调用脚本并以这种方式传递参数 - 假设您拥有脚本可通过本地Web服务器访问。
这是你可以传递由$argc
和$argv
读取的参数的方法( - 表示所有后续参数应该转到脚本而不是PHP解释器二进制文件):
php myfile.php -- argument1 argument2
答案 2 :(得分:5)
- 选项1:php-cgi -
使用'php-cgi'代替'php'来运行你的脚本。这是最简单的方法,因为您不需要专门修改您的PHP代码来使用它:
php-cgi -f /my/script/file.php id=19 myvar=xyz
- 选项2:如果您有网络服务器 -
如果php文件在Web服务器上,您可以在命令行上使用'wget':
wget 'http://localhost/my/script/file.php?id=19&myvar=xyz'
或者:
wget -q -O - "http://localhost/my/script/file.php?id=19&myvar=xyz"
- 访问php中的变量 -
选项1和& 2你可以像这样访问这些参数:
$id = $_GET["id"];
$myvar = $_GET["myvar"];