我有一个虚拟服务器(1 个 CPU 1020 MB RAM),其中装有 Ubuntu 12.04.4 LTS 和 Apache2、PHP5.5、Mysql 以及四个 Web 项目,用户数量较少。去年它运行良好。但突然间,当我尝试访问其中任何一个项目时,我在浏览器上看到此错误:
建立数据库连接时出错
我通过重新启动mysql解决了这个问题:
service mysql restart
但过了一会儿,错误又出现了。检查日志文件后,我发现/var/log/apache2/error.log
:
[2014 年 8 月 5 日星期二 09:04:45.607024] [:error] [pid 8545] [客户端 ipAddress] PHP 警告:curl_setopt_array():当在 /webDir/project/wp-content/themes/custom/js/aPhpFile.php 第 56 行设置 open_basedir 时无法激活 CURLOPT_FOLLOWLOCATION,引用者:webDomain
看看这段代码:
$op = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => 'sharrre', // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect
CURLOPT_TIMEOUT => 10, // timeout on response
CURLOPT_MAXREDIRS => 3, // stop after 10 redirects
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
);
$ch = curl_init();
$op[CURLOPT_URL] = $encUrl;
curl_setopt_array($ch, $op);
以及此链接:https://www.php.net/manual/en/function.curl-setopt.php#102121,我明白为什么会抛出这个错误。
我只是禁用open_basedir
(safe_mode
也被禁用)并重新启动了服务器。
我再次看到这个错误,它出现又消失。但现在没有新的错误/var/log/apache2/error.log
。甚至我尝试过:
//Show today logs
grep -r "Aug\s05" /var/log
但唯一的信息是在/var/log/apache2/error.log
。
知道可能发生什么事情以及如何解决吗?
答案1
归根结底,这不是curl_setopt
问题。这只是由 PHP 配置文件引起的错误(wordpress.stackexchange.com 答案)。