繁体   English   中英

将curl安装到PHP cli

[英]Installing curl to PHP cli

我正在尝试设置一个需要curl的cronjob,我直接从crontab调用它

* * * * * /usr/bin/php myurl/my_cron.php

问题是,看起来我的phpcli没有安装curl模块。

当我从浏览器点击网址时,它工作正常,但是当我运行时

php -q myfile.php

从命令行,它返回

PHP Fatal error:  Call to undefined function curl_init() in my_cron.php on line 20

当我运行php -m ,curl模块没有显示出来。 但是,当我转到浏览器并转储php_info()时,模块会显示并说明它已正确安装。

另一个踢球者是我一直试图用apt-get安装curl到服务器上(Ubuntu 12.04 php 5.4),它似乎取消了我的PHP,因为它开始只是尝试下载index.php文件,无论我试图在哪里浏览到。

以下是我为安装curl而尝试取消PHP的尝试:

sudo apt-get install php-curl
sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

在每次重启apache2服务器之后,我仍然没有骰子,它试图下载文件而不是打开页面。

如何将php5-curl安装到cli中,以便我的服务器可以运行它而不必通过浏览器?

另一种可能性是我可以通过crontab文件中的wget运行cronjobs,但我听说这不是最好的选择,可能不可靠。

任何帮助深表感谢。 谢谢!

我遇到过同样的问题。 但是,最后我通过运行以下命令解决了它。

sudo apt-get install php7.0-curl

安装后重新启动服务器。 由于两个月前他问过这个问题的用户,这个答案可能没用。 但是,这可能对将来阅读此内容的用户有用。

以下是我在ubuntu 14.04上修复此问题的方法,当curl在通过apache运行的php文件中工作时,但是当从cli调用时没有。

ssh到你的服务器和CD到/

find / -name 'curl.so'

运行上面的find命令,找到curl二进制文件挂出的位置。 如果找不到该文件,则可能需要安装curl并再次运行find命令。

apt-get install php5-curl

你现在想要编辑用于从cli运行的php文件的php.ini(它与apache使用的不同),可能在/etc/php5/cli/php.ini

nano /etc/php5/cli/php.ini

你也可以跑

php -i | grep 'php.ini'

要获取文件路径,只需确定。

在你的php.ini文件中按ctrl + w搜索[curl]

您现在想要将扩展名添加到文件中,它应该类似于以下内容,尽管您的curl.so文件的路径可能会有所不同:

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
;curl.cainfo =
extension=/usr/lib/php5/20131226/curl.so

完成上述操作后,我能够在从cli运行的php脚本中使用curl。

如果你使用php5的命令行界面('cli'),而不是

php -q myfile.php

请用:

php5 -q myfile.php

php5-curl似乎为cli php5而不是php启用curl模块,并且两者(可以)加载不同的配置和模块。

我使用ubuntu 14.04和php 5.3。 升级到PHP 5.6.29后我也有php curl的问题。 更新到php 5.6.29后的目录结构:

/ etc / php5 - 旧版本(5.3)

/etc/php/5.6 - 新版本

下一个命令

sudo apt-get install php5-curl

没有帮助(看起来它连接到旧的PHP版本 - 5.3)。

我找到了下一篇文章: php 5.6 for magento

它建议使用命令

apt-get -y install php5.6-curl

代替

apt-get -y install php5-curl

这个对我有用!

你应该经常检查的第一件事是你的php.ini文件。 您的Web根目录中应该有一个php.ini文件。 大多数Web服务器默认安装Curl; 我还没有找到一个没有安装curl的PHP Web服务器。 但它并不总是能够启用。

检查你的php.ini文件并搜索php_curl.dll,它应该如下所示:

;extension=php_curl.dll

只需从“扩展名”之前删除分号(;)并保存文件即可。 它应该马上工作。 根据你已安装的phpinfo.php,所以可能只需要启用它。

如果您感兴趣,可以在此处找到类似的问题: 调用未定义的函数curl_init()

by: 首先找到你的的版本:

php -v

例如,如果它是版本7那么:

sudo apt-cache search php7

这将为您提供当前版本的正确模块名称:

php7.0-curl - CURL module for PHP     <---- the name of curl module. 
php7.0-dev - Files for PHP7.0 module development
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-json - JSON module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mysql - MySQL module for PHP
.
.
so on

support, copy the name of curl module from the list above then do the following: 所以要添加支持,请从上面的列表中复制curl模块的名称,然后执行以下操作:

sudo apt-get install php7.0-curl

万一有人到这里找到运行卷曲的Windows版本。

打开php.ini并删除; extension=php_curl.dll第656行之前。

我非常确定Apache加载的是C:\\wamp\\bin\\apache\\Apache2.2.17\\bin\\php.ini因此您可以在浏览器中找到curl。

但是当从命令行运行php时,它可能会显示未知函数curl_init();

运行php -r "echo php_ini_loaded_file();" 在命令行中查看正在加载哪个ini文件。

通常它在C:\\wamp\\bin\\php\\php5.3.5\\php.ini它与Apache正在使用的不同的文件。 打开它,然后删除; 在扩展= p​​hp_curl.dll第656行之前。

希望它可以帮助某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM