Accelerator e um errinho no DRUPAL

Fui forçado hoje, a desativar o eAccelerator, pelo menos até segunda ordem. De cara, ele me apresentou alguns erros 500, espalhados pelo site, em seções espalhadas, o que estava me gerando uma instabilidade na navegação geral do site.

Assim, até que eu consiga chegar ao veredicto sobre o que realmente aconteceu, o software está parado aqui na minha conta na DREAMHOST.

Mas, não peguem minha experiência como exemplo. Meu site, por si só, sempre foi muito complexo de ser administrado, porque sempre foi um mezo-Frankenstein, levando em consideração que ele hoje é meio Drupal, meio antigo código.

Por isto, acredito que talvez, algumas pessoas consigam rodar o mesmo numa boa. Quanto ao tutorial, sinceramente, só vou soltá-lo por aqui, quando tiver resolvido todas estas pendengas, que, posso dizer … não foram poucas desde que eu comecei a mexer no eAccelerator.

Aproveitando o ensejo, tive um pequeno problema com o módulo Embedded Media Field, que apresentava o seguinte erro :

Cannot use string offset as an array

O problema apareceu por causa do seguinte. Meu antigo site usava o PHP4 como padrão, e migrando para o DRUPAL e com a comunidade PHP avisando a morte eminente do PHP4, não houve outro jeito, agora é ter que usar mesmo o PHP5.

Aí, este errinho apareceu.

Mas, como tudo no DRUPAL, a solução está nos fóruns ou no grande pai Google. O que parece o problema está aqui :

$node->$field_name[$delta]['data'] = $data;

E pode ser resolvido, do seguinte modo :

if ($field['multiple']) {
      foreach ($items as $delta => $item) {
        $data = (array)unserialize($items[$delta]['data']);
        $nodefield = $node->$field_name;
        $items[$delta]['data'] = $data;
        $nodefield[$delta]['data'] = $data;
      }
    }

No meu caso, o código estava no arquivo emfield.module, na linha 148. Não sei se vai estar na mesma linha no seu, mas já vale como referência.

Achou o if, é só editar e colocar as linhas acima, lembrando-se também de editar o else, porque senão a coisa não vai funcionar do modo como você quer 🙂