PHP致命错误:wincache(windows azure)中出现故障

PHP致命错误:wincache(windows azure)中出现故障,php,codeigniter,azure,Php,Codeigniter,Azure,我的项目中有codeigniter框架。我的网站正在windows azure平台上运行。有时它会给我这个错误: PHP致命错误:Wincache[6484]可用内存中出现故障:块0x41d56d8未使用 在第44行的D:\home\site\wwwroot\system\libraries\Log.php中 我试图通过更改内存值来更改php.ini文件: ini_set('memory_limit','2048M'); 但是,在我检查了内存之后,我得到了峰值使用率()然后我发现应用程序使用的

我的项目中有codeigniter框架。我的网站正在windows azure平台上运行。有时它会给我这个错误:

PHP致命错误:Wincache[6484]可用内存中出现故障:块0x41d56d8未使用 在第44行的D:\home\site\wwwroot\system\libraries\Log.php中

我试图通过更改内存值来更改php.ini文件:

ini_set('memory_limit','2048M');
但是,在我检查了
内存之后,我得到了峰值使用率()然后我发现应用程序使用的内存甚至没有超过1MB。我不知道这里发生了什么。当这种情况发生时,我会看到一个空白页面,网站也会关闭

如果您需要更多信息或代码,请询问我

Log.php:

public function __construct()
{
    $config =& get_config();

    $this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';

    if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path)) // This is line 44.
    {
        $this->_enabled = FALSE;
    }

    if (is_numeric($config['log_threshold']))
    {
        $this->_threshold = $config['log_threshold'];
    }

    if ($config['log_date_format'] != '')
    {
        $this->_date_fmt = $config['log_date_format'];
    }
}
php文件是默认的codeigniter文件

最终解决方案:

public function __construct()
{
    $config =& get_config();

    $this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';

    if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path)) // This is line 44.
    {
        $this->_enabled = FALSE;
    }

    if (is_numeric($config['log_threshold']))
    {
        $this->_threshold = $config['log_threshold'];
    }

    if ($config['log_date_format'] != '')
    {
        $this->_date_fmt = $config['log_date_format'];
    }
}
我已经用以下内容更新了我的
php.ini
文件:

wincache.fcenabled=0
wincache.ocenabled=0
wincache.ucenabled=0
wincache.reroute_enabled = 0
wincache.srwlocks = 0

这是Windows服务器上IIS或WinCache的问题。你可以关注iis论坛。 为了确保这一点,请在php.ini中选中以下选项:

wincache.reroute_enabled = 0
wincache.srwlocks = 0

同时将wincache更新至最新版本。

从wincache 1.3.7.5开始,特定的wincache错误消息已被删除,该消息在最近的Azure Web服务更新中推出

至于错误消息的含义:当试图释放跨进程共享内存段中的内存块时,WinCache检测到该块已被释放。该消息表示WinCache检测到问题,并避免了损坏内存。该消息实际上应该是警告级别的消息。此外,执行请求应该一直运行到完成,并且应该将响应返回给客户


在WinCache 1.3.7.4之前,WinCache没有检测到这种情况,并会破坏内存,最终导致AV。因此,错误消息实际上表明WinCache刚刚将您从崩溃中解救出来,不客气

您使用的是什么web服务器,Apache、IIS和其他?D:\home\site\wwwroot\system\libraries\Log.php文件的第44行有什么内容?这表示WinCache试图加倍释放跨进程共享内存段中的内存块。@RolandoIsidoro:我正在使用windows azure。我已经更新了我的问题。你提到的致命错误有时会发生。你找到可能导致它的行动了吗?我已经更新了php.ini文件。现在,我需要等待下一次失败。因为它只是偶尔发生。以前不是这样的。请您解释一下这是什么错误以及可能的原因是什么?@RonakPatel在更新到1.3.7之后,重路由功能被启用。它在导致死亡锁的文件操作中出错。所以你的日志有时会停止,客户端会收到一个500HTTP错误。我刚刚接到通知。:)