PHP exec()可以在命令行中工作,但不能在web中工作
我试图在PHP脚本中使用jarun的“”,以便搜索YouTube并找到第一个结果的URL。我正在执行的命令是PHP exec()可以在命令行中工作,但不能在web中工作,php,exec,raspbian,Php,Exec,Raspbian,我试图在PHP脚本中使用jarun的“”,以便搜索YouTube并找到第一个结果的URL。我正在执行的命令是googler--np--json-C-n1-wyoutube.com-x,它在我的本地机器上运行得非常好。这是我的密码: <?php exec("googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine", $results); var_dump($results); ?> 以及 su - pi
googler--np--json-C-n1-wyoutube.com-x
,它在我的本地机器上运行得非常好。这是我的密码:
<?php
exec("googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine", $results);
var_dump($results);
?>
以及
su - pi -c 'googler --np --json -C -n 1 -w youtube.com -x thomas the dank engine'
这两个都不起作用。这和谷歌有关系吗?我做错了什么
将2>&1
添加到命令时,我会收到以下错误消息:
检测到标准输出编码“ascii”。谷歌要求utf-8正常工作。错误的编码可能是由于非UTF-8区域设置或不正确的Python编码造成的。(对于记录,您的区域设置语言为,区域设置编码为;未设置PythonoEncoding。)请设置UTF-8区域设置(例如en_US.UTF-8)或将PythonoEncoding设置为UTF-8
必须从php.ini文件中的
disable_functions
参数中删除exec
,以安装php服务器模块(与CLI安装分开)。服务器模块默认情况下通常会禁用它。必须从php.ini文件中的disable_functions
参数中删除exec
,以便安装php服务器模块(与CLI安装分开)。默认情况下,服务器模块通常会禁用它。请尝试放置:
putenv("PYTHONIOENCODING=utf-8");
在调用exec()
之前在脚本中googler
显然需要设置区域设置或此环境变量。尝试放置:
putenv("PYTHONIOENCODING=utf-8");
在调用
exec()
之前在脚本中googler
显然需要设置区域设置或此环境变量。可能googler
不在其$PATH
中,请尝试使用完整路径名。在发送到exec()
的命令末尾,使用2>&1
捕获错误输出。PHP给您的实际错误是什么?“所以我给了那个用户没有密码的完全sudo权限“-这永远不是做事的方式!登录时,在~/.profile
和/etc/profile
中设置环境变量。Web服务器不以交互方式登录,因此不执行概要文件脚本。谷歌的googler
脚本显然依赖于语言环境设置,而这些变量没有设置。尝试放置putenv(“LC_ALL=en_US.UTF-8”)在调用exec()
之前,请在PHP脚本中使用code>。可能googler
不在其$PATH
中,请尝试使用完整路径名。在发送到exec()
的命令末尾,使用2>&1
捕获错误输出。PHP给您的实际错误是什么?“所以我给了那个用户没有密码的完全sudo权限“-这永远不是做事的方式!登录时,在~/.profile
和/etc/profile
中设置环境变量。Web服务器不以交互方式登录,因此不执行概要文件脚本。谷歌的googler
脚本显然依赖于语言环境设置,而这些变量没有设置。尝试放置putenv(“LC_ALL=en_US.UTF-8”)调用exec()
之前,请在PHP脚本中执行code>。我已经成功地执行了exec(“whoami”)
,因此这不是问题所在。对于错误的答案,我深表歉意。根据提供的信息,我给出了我的最佳猜测。我已经成功地执行了exec(“whoami”)
,因此这不是问题所在。对于错误的答案,我深表歉意。根据提供的信息,我做出了最好的猜测。