kesalahan phpmyadmin symlinks setelah ubuntu upgrade

15

Setelah peningkatan server ubuntu saya ke 13,04 phpmyadmin saya tidak lagi dapat dijangkau. browser melaporkan 500 (kesalahan server internal) dan di error.log dikatakan:

PHP Fatal error: require_once (): Gagal membuka diperlukan './libraries/php-gettext/gettext.inc' (include_path = '.') Di /usr/share/phpmyadmin/libraries/select_lang.lib.php pada baris 370

Perangkat lunak php lainnya berfungsi dengan baik pada mesin dan begitu pula mysql itu sendiri. Phpmyadmin diinstal dengan benar dan berfungsi dengan baik sebelum dist-upgrade. Saya juga melakukannya sudo aptitude reinstall phpmyadmintetapi itu tidak membantu.

nomor versi phpmyadmin adalah 4: 3.5.8.1-1

ada ide, apa yang salah di sini?

/ edit: saat ini saya tahu, bahwa symlinks di sini sepertinya tidak berfungsi:

mcnesium@fluse:/usr/share/phpmyadmin/libraries/php-gettext$ ls -l
total 0
lrwxrwxrwx 1 root root 36 Apr 25 03:38 gettext.inc -> ../../../php/php-gettext/gettext.inc
lrwxrwxrwx 1 root root 36 Apr 25 03:38 gettext.php -> ../../../php/php-gettext/gettext.php
lrwxrwxrwx 1 root root 36 Apr 25 03:38 streams.php -> ../../../php/php-gettext/streams.php

saya mencadangkan folder php-gettextdan cp -r sudah yang disinkronkan, sekarang berfungsi. jadi ini sebenarnya tampaknya menjadi masalah symlink.

ini adalah awal dari saya /etc/phpmyadmin/apache.conf

# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

jadi itu seharusnya mengikuti symlinks segera. sebelum upgrade ubuntu semuanya bekerja dengan baik. jadi ada apa dengan symlink?

mcnesium
sumber
Periksa izin di bawah /usr/share/php/php-gettext. Apakah Anda menggunakan SELinux / AppArmor?
dawud

Jawaban:

7

Bagi saya solusi berikut memecahkan masalah:

Dalam file konfigurasi situs web saya, saya memiliki bagian berikut:

<IfModule mod_php5.c>
    AddType application/x-httpd-php .php

    php_flag magic_quotes_gpc Off
    php_flag track_vars On
    php_flag register_globals Off
    php_admin_flag allow_url_fopen Off
    php_value include_path .
    php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
    php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/
</IfModule>

Satu-satunya perubahan yang saya buat sejak menginstal Ubuntu 13.04 adalah sertakan / usr / share / php / php-gettext / di open_basedir, dan itu berhasil.

gdl
sumber
23

Untuk yang lain:

sudo apt-get install php-gettext

mungkin jawabannya (terutama dengan php7 karena tampaknya ini tidak disertakan secara default, mungkin karena itu adalah ekstensi pir).

dua kali
sumber
Saya mendapatkan kesalahan setelah melakukan instalasi baru Ubuntu 16.04. Ini bekerja setelah memutakhirkan 15,10 ke 16,04, tetapi saya harus melakukan instalasi baru karena masalah lain. Menginstal php-gettextpaket secara eksplisit (dan menambahkan Require all grantedke phpmyadmin.conf) membuatnya berfungsi kembali.
bovender
1
ini jawaban yang sebenarnya!
tika 2-16
Terima kasih untuk itu; Saya tidak memikirkan itu; ini dan php-mbstringdiharuskan untuk membuat phpmyadmin berfungsi dengan baik untuk saya dengan php7
jhaagsma
1
Ini aneh, karena php-gettext adalah dependensi dari paket phpmyadmin: packages.ubuntu.com/xenial/phpmyadmin jadi saya tidak yakin mengapa itu belum ada.
Sam Wilson
Instal LAMP terlebih dahulu, kemudian phpmyadmin, mungkin itu adalah bagian dari masalah
twicejr
5

Jika Anda open_basedirmengandung /usr/share/php/php-gettext/sudah (seperti dalam kasus saya) dan Anda tidak bisa mendapatkannya untuk bekerja dengan jawaban sebelumnya kemudian melakukan:

sudo rm /usr/share/phpmyadmin/libraries/php-gettext/*

menghapus tautan simbolik

sudo ln /usr/share/php/php-gettext/* /usr/share/phpmyadmin/libraries/php-gettext

menciptakan tautan keras

Ini membuat phpmyadmin berfungsi kembali. Mengapa itu rusak di 13,04 dan tautan simbolis tidak diikuti sementara apache.conf mengatakan mereka harus, tetap menjadi misteri bagi saya.

pengguna221931
sumber
Terima kasih, itu berhasil. Baris open_basedir sudah berisi direktori php-gettext sehingga perlu menginstal ulang tautan tersebut.
Karma Fusebox
0

Aku harus menonaktifkan (awalan dengan #) yang Alias /phpmyadmin /usr/share/phpmyadmindi /etc/apache2/conf-available/phpmyadmin.confsejak saya menggunakan file vhost kustom untuk phpmyadmin untuk melayani di subdomain. Dengan tambahan Aliasitu tidak berfungsi karena suatu alasan.

Lorenz Haase
sumber
0

Jika phpMyAdmin berjalan di server Nginx, php.initambahan itu perlu menambahkan path /usr/share/php/php-php-gettextke open_basedirkunci.

Luke yang beruntung
sumber