utf8_encode()和curl_init()不能在PHP7上工作

我刚刚从Windows转换到Ubuntu,我已经安装了一个新的nginx,mysql,php7.0-fpm(包括Opcache / ApcCache),并从git(Yii2项目)中克隆了一个项目。

这个仓库在Windows上工作,但现在看来一些内置的function不再工作。 我已经检查了文档,而且似乎没有任何function被弃用。

这是我迄今发现的错误,代码片段和相应的错误消息:

curl_init()

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->getSlackPayloadUrl()); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); 

调用未定义的函数后端\ components \ curl_init()

函数utf8_encode()

 $data = 'payload=' . json_encode(array_map("utf8_encode", [ 'channel' => $channel, 'text' => $message, ])); 

array_map()期望参数1是一个有效的callback函数'utf8_encode'未find或无效的函数名称

为了彻底,nginxconfiguration:

nginxconfiguration

 server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name project.dev; root /var/www/project/backend/web; index index.php; access_log /var/www/project/log/access.log; error_log /var/www/project/log/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.0-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } 

如果有任何其他相关的信息,请添加评论,我会更新。

根据我们的讨论讨论,下面的解决方案来: –

1.需要通过命令在你的系统上安装CURL : –

 sudo apt-get install php7.0-curl 

2.关于第二个错误,我得到这个链接: – 从php7中删除的utf8_(en | de)代码?

它声明utf8_encode/decode是与php xml extension相关的函数,您必须通过以下命令安装您的系统: –

 sudo apt-get install php7.0-xml 

重要注意事项: –安装这些库软件包后,请重新启动 服务器,以便进行更改 。 谢谢。

utf8_encode()php xml extension下的一个函数,在curl extension下是curl extension的当然。

解决

 sudo apt-get install php7.0-curl 

 sudo apt-get install php7.0-xml