Tengo un sitio web de wordpress que de repente dejó de funcionar hoy. Cuando miro a los registros que veo y error:PHP La base de datos de la zona horaria es un error corrupto
[error] [client 50.78.108.177] PHP Fatal error: strtotime(): Timezone database is corrupt - this should never happen!
Después de leer en Google una persona dijo que descubrieron un problema de permisos en /usr/share/zoneinfo. Traté de cambiar los permisos a 777, 775, 770 y sigo recibiendo el mismo error. Estoy ejecutando php PHP 5.3.2 en Ubuntu 10.04.3 LTS. Cualquier sugerencia o recomendación sería útil. Si todo lo demás falla, intentaré cambiar a una versión anterior de php, pero quería probar otras cosas antes de hacerlo.
gracias, Timnit
actualización
en caso de que ayuda a: los puntos de error a strtotime
en la función de abajo
function mysql2date($dateformatstring, $mysqlstring, $translate = true) {
$m = $mysqlstring;
if (empty($m))
return false;
if ('G' == $dateformatstring)
return strtotime($m . ' +0000');
$i = strtotime($m);
if ('U' == $dateformatstring)
return $i;
if ($translate)
return date_i18n($dateformatstring, $i);
else
return date($dateformatstring, $i);
}
Actualización # 2:
por ahora Se ha solucionado el problema simplemente teniendo la función por encima de return false;
sin realizar nada. Sin embargo, todavía no he descubierto la causa raíz del problema.
actualización # 3:
var_dump($dateformatstring)
string(5) "d.m.y" string(1) "m" string(5) "d.m.y" string(1) "m" string(5) "d.m.y" string(1) "m"
var_dump($mysqlstring)
string(19) "2011-10-20 05:35:01" string(19) "2011-10-20 05:35:01" string(19) "2011-10-20 05:25:22" string(19) "2011-10-20 05:25:22" string(19) "2011-10-19 05:10:06" string(19) "2011-10-19 05:10:06"
actualización # 4:
hay otro fragmento de código que genera el registro de errores a continuación:
PHP Fatal error: date(): Timezone database is corrupt - this should never happen! in /srv/www/motionthink.com/public_html/wp-admin/includes/class-wp-filesystem-direct.php on line 346, referer: wp_root_directory/wp-admin/plugins.php?plugin_status=upgrade
309 function dirlist($path, $include_hidden = true, $recursive = false) {
310 if ($this->is_file($path)) {
311 $limit_file = basename($path);
312 $path = dirname($path);
313 } else {
314 $limit_file = false;
315 }
316
317 if (! $this->is_dir($path))
318 return false;
319
320 $dir = @dir($path);
321 if (! $dir)
322 return false;
323
324 $ret = array();
325
326 while (false !== ($entry = $dir->read())) {
327 $struc = array();
328 $struc['name'] = $entry;
329
330 if ('.' == $struc['name'] || '..' == $struc['name'])
331 continue;
332
333 if (! $include_hidden && '.' == $struc['name'][0])
334 continue;
335
336 if ($limit_file && $struc['name'] != $limit_file)
337 continue;
338
339 $struc['perms'] = $this->gethchmod($path.'/'.$entry);
340 $struc['permsn'] = $this->getnumchmodfromh($struc['perms']);
341 $struc['number'] = false;
342 $struc['owner'] = $this->owner($path.'/'.$entry);
343 $struc['group'] = $this->group($path.'/'.$entry);
344 $struc['size'] = $this->size($path.'/'.$entry);
345 $struc['lastmodunix']= $this->mtime($path.'/'.$entry);
346 $struc['lastmod'] = date('M j',$struc['lastmodunix']);
347 $struc['time'] = date('h:i:s',$struc['lastmodunix']);
348 $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd:'f';
349
Actualización # 5:
haciendo un php -i | fgrep -i date
vuelve
Build Date => Dec 13 2011 18:43:02
date date/time support => enabled date.default_latitude => 31.7667 => 31.7667 date.default_longitude => 35.2333 => 35.2333 date.sunrise_zenith => 90.583333 => 90.583333 date.sunset_zenith => 90.583333 => 90.583333 date.timezone => no value => no value
entonces editar el archivo php.ini para configurar la zona horaria a "América/Los Ángeles" y consiguieron esta salida
date/time support => enabled
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.583333 => 90.583333
date.sunset_zenith => 90.583333 => 90.583333
date.timezone => America/Los_Angeles => America/Los_Angeles
Luego reinicié apache2. Todavía consigo el error
* panda triste *, toda esa depuración:/ –