use*_*822 17 php ubuntu cron curl command-line-interface
我正在尝试设置一个需要curl的cronjob,我直接从crontab调用它
* * * * * /usr/bin/php myurl/my_cron.php
Run Code Online (Sandbox Code Playgroud)
问题是,看起来我的phpcli没有安装curl模块.
当我从浏览器点击网址时,它工作正常,但是当我运行时
php -q myfile.php
Run Code Online (Sandbox Code Playgroud)
从命令行,它返回
PHP Fatal error: Call to undefined function curl_init() in my_cron.php on line 20
Run Code Online (Sandbox Code Playgroud)
当我运行php -mcurl模块时没有显示出来.但是,当我转到浏览器并转储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
Run Code Online (Sandbox Code Playgroud)
在每次重启apache2服务器之后,我仍然没有骰子,它试图下载文件而不是打开页面.
如何安装php5-curl到cli,以便我的服务器可以运行它,而不必通过浏览器?
另一种可能性是我可以通过crontab文件中的wget运行cronjobs,但我听说这不是最好的选择,可能不可靠.
任何帮助深表感谢.谢谢!
Sri*_*man 44
我遇到过同样的问题.但是,最后我通过运行以下命令解决了它.
sudo apt-get install php7.0-curl
Run Code Online (Sandbox Code Playgroud)
安装后重新启动服务器.由于两个月前他问过这个问题的用户,这个答案可能没用.但是,这可能对将来阅读此内容的用户有用.
rmm*_*oul 15
以下是我在ubuntu 14.04上修复此问题的方法,当curl在通过apache运行的php文件中工作时,但是当从cli调用时没有.
ssh到你的服务器和CD到/
find / -name 'curl.so'
Run Code Online (Sandbox Code Playgroud)
运行上面的find命令,找到curl二进制文件挂出的位置.如果找不到该文件,则可能需要安装curl并再次运行find命令.
apt-get install php5-curl
Run Code Online (Sandbox Code Playgroud)
你现在想要编辑用于从cli运行的php文件的php.ini(它与apache使用的不同),可能在/etc/php5/cli/php.ini
nano /etc/php5/cli/php.ini
Run Code Online (Sandbox Code Playgroud)
你也可以跑
php -i | grep 'php.ini'
Run Code Online (Sandbox Code Playgroud)
要获取文件路径,只需确定.
在你的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
Run Code Online (Sandbox Code Playgroud)
完成上述操作后,我能够在从cli运行的php脚本中使用curl.
您应该始终检查的第一件事是您的 php.ini 文件。您的 Web 根目录中应该有一个 php.ini 文件。大多数 Web 服务器上默认安装了 Curl;我还没有找到尚未安装curl 的PHP Web 服务器。但它并不总是启用。
检查 php.ini 文件并搜索 php_curl.dll,它应该如下所示:
;extension=php_curl.dll
只需删除“扩展名”前面的分号(;)并保存文件即可。它应该立即起作用。根据您的 phpinfo.php 它已经安装,所以它可能只需要启用。
如果您有兴趣,可以在这里找到类似的问题:Call to undefined function curl_init()
| 归档时间: |
|
| 查看次数: |
34509 次 |
| 最近记录: |