Я использую ответвление разработки ubuntu 16.04 LTS. Я недавно установил mysql, apache2 и phpmyadmin. Когда я вхожу localhost/phpmyadmin
в строке поиска в Firefox это просто ничего не показывает, в то время как хром дает 500 ошибок сервера. Когда я вижу апачский error.log, это говорит
[Fri Jan 29 16:39:11.833839 2016] [:error] [pid 2795] [client 127.0.0.1:58438] PHP Fatal error: require(): Failed opening required '/usr/share/php//Crypt/Random.php' (include_path='.') in /usr/share/phpmyadmin/libraries/session.inc.php on line 16
Но Random.php
существуйте в том же месте, которое говорит ошибка failed opening
Я Использую
* проигнорируйте ошибки грамматики.
Похоже, что Random.php от phpseclib изменился. Я сделал быструю фиксацию с изменением:
$_SESSION[' PMA_token '] = bin2hex(phpseclib\Crypt\Random::string(16));
на строке 116 и 135 с
$_SESSION[' PMA_token '] = bin2hex(crypt_random_string(16));
в файле/usr/share/phpmyadmin/libraries/session.inc.php
Это должно зафиксировать его на данный момент, пока phpmyadmin devs не идут с решением.
Редактирование 30.01.2016: PMA devs зафиксировал это. Никакая потребность в изменении файла вручную.
По некоторым причинам phpmyadmin не может считать файл Crypt/Random.php, если помещено в/usr/share/php папку. Кроме того, я попробовал также/usr/local/share/php5 тем же результатом. Наконец я скопировал целую папку Crypt с/usr/share/php в/usr/share/phpmyadmin/libraries /
cp -r /usr/share/php/Crypt /usr/share/phpmyadmin/libraries/
и изменил/usr/share/phpmyadmin/libraries/session.inc.php для включения Crypt/Random.php оттуда.
#require PHPSECLIB_INC_DIR . '/Crypt/Random.php';
require ("/usr/share/phpmyadmin/libraries/Crypt/Random.php");
Это работало, затем у меня есть вторая ошибка, описанная jancoow. Его фиксация помогла мне также решить его (два места - строка 117 и 136 в моем случае - создание сессии и уничтожение его).
Поэтому наконец вопрос остается - почему к тем файлам нельзя получить доступ от/usr/share/php или/usr/local/share/php5 папок? Никакая потребность добавить, что все права доступа в порядке.
Моя установка
разработка Kubuntu 16.04
phpmyadmin 4.5.4.-1
apache2-мусорное-ведро, 2.4.18-1ubuntu
libapache2-mod-php5 5.6.16+dfsg-1ubuntu1
ответ user185719 помог мне только частично, потому что, сохраненная ошибка, о которой сообщают: session.inc.php не смог включать Random.php. Вызов file_exists () на Random.php всегда возвращает false, в то время как нет никаких проблем разрешения, никакого safe_mode, таким образом, я действительно не понимаю, почему это не работает как ожидалось. Я должен был сделать следующее обходное решение для получения работы phpmyadmin (по крайней мере на данный момент, пока парни в phpmyadmin не решают проблему):
скопируйте следующее содержание файла/usr/share/php/Crypt/Random.php в/usr/share/phpmyadmin/libraries/session.inc.php
define('CRYPT_RANDOM_IS_WINDOWS', strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
function crypt_random_string($length) {
if (CRYPT_RANDOM_IS_WINDOWS) {
....
}
}
После копирования кода выше, ответ user185719 должен устранить проблему. Моя система:
Linux Mint 17.3 Rosa
PHP 5.6.17-3
Apache 2.4.18
PhpMyadmin 4.5.4-1