Unable to install omeka S with php 5.6.5

Hello,

I am trying to install omeka S on a server with php 5.6.5. Theoretically it should work (Omeka S is supposed to support php 5.6+ even if php 7 is recommended).

However, in practice, I have a blocking error message when trying to access admin dashboard (see below):

Is there a way to install a working Omeka S with php 5.6.5 ?

exception 'Zend\Math\Exception\RuntimeException' with message 'This PHP environment doesn't support secure random number generation. Please consider upgrading to PHP 7' in /data/www/server45/public/omeka-s/vendor/zendframework/zend-math/src/Rand.php:47
Stack trace:
#0 /data/www/server45/public/omeka-s/vendor/zendframework/zend-validator/src/Csrf.php(297): Zend\Math\Rand::getBytes(32)
#1 /data/www/server45/public/omeka-s/vendor/zendframework/zend-validator/src/Csrf.php(222): Zend\Validator\Csrf->generateHash()
#2 /data/www/server45/public/omeka-s/vendor/zendframework/zend-form/src/Element/Csrf.php(154): Zend\Validator\Csrf->getHash(true)
#3 /data/www/server45/public/omeka-s/vendor/zendframework/zend-form/src/Form.php(213): Zend\Form\Element\Csrf->prepareElement(Object(Omeka\Form\LoginForm))
#4 /data/www/server45/public/omeka-s/vendor/zendframework/zend-form/src/View/Helper/Form.php(61): Zend\Form\Form->prepare()
#5 /data/www/server45/public/omeka-s/vendor/zendframework/zend-form/src/View/Helper/Form.php(49): Zend\Form\View\Helper\Form->render(Object(Omeka\Form\LoginForm))
#6 [internal function]: Zend\Form\View\Helper\Form->__invoke(Object(Omeka\Form\LoginForm))
#7 /data/www/server45/public/omeka-s/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(394): call_user_func_array(Object(Zend\Form\View\Helper\Form), Array)
#8 /data/www/server45/public/omeka-s/application/view-shared/omeka/login/login.phtml(5): Zend\View\Renderer\PhpRenderer->__call('form', Array)
#9 /data/www/server45/public/omeka-s/application/view-shared/omeka/login/login.phtml(5): Zend\View\Renderer\PhpRenderer->form(Object(Omeka\Form\LoginForm))
#10 /data/www/server45/public/omeka-s/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(502): include('/data/www/poinc...')
#11 /data/www/server45/public/omeka-s/vendor/zendframework/zend-view/src/View.php(207): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel))
#12 /data/www/server45/public/omeka-s/vendor/zendframework/zend-view/src/View.php(236): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#13 /data/www/server45/public/omeka-s/vendor/zendframework/zend-view/src/View.php(200): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel))
#14 /data/www/server45/public/omeka-s/vendor/zendframework/zend-mvc/src/View/Http/DefaultRenderingStrategy.php(105): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#15 /data/www/server45/public/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(271): Zend\Mvc\View\Http\DefaultRenderingStrategy->render(Object(Zend\Mvc\MvcEvent))
#16 /data/www/server45/public/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(143): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent))
#17 /data/www/server45/public/omeka-s/vendor/zendframework/zend-mvc/src/Application.php(367): Zend\EventManager\EventManager->triggerEvent(Object(Zend\Mvc\MvcEvent))
#18 /data/www/server45/public/omeka-s/vendor/zendframework/zend-mvc/src/Application.php(348): Zend\Mvc\Application->completeRequest(Object(Zend\Mvc\MvcEvent))
#19 /data/www/server45/public/omeka-s/index.php(17): Zend\Mvc\Application->run()
#20 {main}

PHP 5.6 does work, but it’s slightly more complicated than with 7 which includes random number generation functions natively.

There’s a fallback included in Omeka S’s dependencies that makes 5.6 work, but one of the following needs to be true:

  • the /dev/urandom device file is readable (this is usually true for Unix/Linux systems)
  • the “libsodium” PHP extension is installed
  • the “mcrypt” PHP extension is installed
  • on Windows only, the COM extension is installed

This looks like a Unix-y server from the paths given, so it’s odd that /dev/urandom isn’t available. PHP’s open_basedir setting could be preventing PHP from opening that file, if you have it set and it doesn’t include /dev. Otherwise, installing the “mcrypt” extension is probably the next easiest option.

The installer should check this stuff for you before we let you install. I’ll look into adding that.

The installation of libsodium and mcrypt does indeed fix the problem. Thanks !