我正在尝试在PHP脚本中使用jarun的“googler”来搜索YouTube并找到第一个结果的URL。我正在执行的命令是googler --np --json -C -n 1 -w youtube.com -x <name of youtube video>
,它在我的本地机器上完美运行。这是我的代码:
<?php
exec("googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine", $results);
var_dump($results);
?>
当我在命令行中执行它时,它可以正常工作,但是当我通过Web浏览器或GET请求执行它时,它不起作用。我知道它正在以另一个用户身份执行。就我而言,它是用户www-data
,因此我在没有密码的情况下为该用户提供了完整的sudo权限,并执行了以下命令:
sudo -u pi googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine
以及
su - pi -c 'googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine'
这些都没有奏效。这与googler有关吗?我做错了什么?
将2>&1
添加到命令时,出现以下错误消息:
检测到stdout编码'ascii'。 googler需要utf-8才能正常工作。错误的编码可能是由于非UTF-8语言环境或不正确的PYTHONIOENCODING造成的。 (对于记录,您的语言环境语言是和语言环境编码;您的PYTHONIOENCODING未设置。)请设置UTF-8语言环境(例如,en_US.UTF-8)或将PYTHONIOENCODING设置为utf-8。
答案 0 :(得分:2)
尝试推杆:
putenv("PYTHONIOENCODING=utf-8");
在调用exec()
之前在脚本中。 googler
显然需要设置区域设置或此环境变量。
答案 1 :(得分:0)
您必须从php.ini文件中的exec
参数中删除disable_functions
,以便安装PHP的服务器模块(与CLI安装不同)。默认情况下,服务器模块通常会禁用它。