PHP tidak berfungsi di Apache2 setelah peningkatan sistem

14

Baru-baru ini meningkatkan sistem saya dari Karmic ke Lucid. Saya percaya ini melibatkan Apache dan PHP yang diperbarui.

Sekarang server saya tidak dapat menangani file PHP, navigasi apa pun ke sana memicu pengunduhan daripada penguraian.

Modul PHP masih dimuat di mod-enabled Apache dan saya miliki AddType application/x-httpd-php .phpdi httpd.conf saya.

Tidak ada pesan yang berarti di akses Apache atau log kesalahan jadi saya bingung.

Bantuan apa pun akan dihargai. Terima kasih.

Jivings
sumber

Jawaban:

17

/var/log/apache2/error.log harus menunjukkan garis seperti di bawah ini jika PHP berhasil dimuat:

[Sel 30 Agustus 12:53:36 2011] [pemberitahuan] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubuntu4.9 dengan Suhosin-Patch dikonfigurasi - melanjutkan operasi normal

Perhatikan tanggalnya, jika sesuatu dari 2009, Anda telah salah mengonfigurasi sesuatu.

AddType tidak berguna, Anda perlu menggunakan:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Lihat juga petunjuk instalasi pada php.net untuk Apache 2.x .

Anda tidak perlu menambahkannya secara manual, paket libapache2-mod-php5menginstal yang /etc/apache2/mods-available/php5.confberisi:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Karena ini adalah sebuah conffile, mungkin saja itu tidak diinstal dengan pemutakhiran. Untuk memperbaikinya, bersihkan dan pasang kembali:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Untuk mengaktifkan PHP, Anda harus menjalankan:

sudo a2enmod php5

Mulai ulang server web setelah:

sudo /etc/init.d/apache2 restart

Hal-hal lain yang harus dilakukan:

  • periksa pengaturan yang bertentangan di /etc/apache2.
  • sudahkah Anda membangun Apache dari sumber?
  • Jalankan sudo apache2ctl configtestuntuk memeriksa konfigurasi Anda untuk kesalahan sintaks
  • Buka http: // localhost / server-info untuk memeriksa konfigurasi dan modul yang dimuat. The statusmodul harus dimuat untuk itu. Jika Anda menjalankan server jauh, Anda perlu menambahkan diri Anda ke dalam Allow fromdaftar /etc/apache2/mods-enabled/status.confdan restart server setelahnya
Lekensteyn
sumber
Cemerlang. AFK sekarang, tetapi akan menguji ini malam ini. Terima kasih.
Jivings
Dibersihkan dan diinstal ulang, modul dimuat di mod-enabled, tetapi saya masih memiliki masalah yang sama ... Saya tidak dapat menemukan apa pun yang akan bertentangan dan menyertakan untuk file conf pasti ada di apache.conf. Apakah Anda punya ide lain? Terima kasih.
Jivings
@Jivings: beberapa ide debugging ditambahkan
Lekensteyn
Masih belum bisa mengetahuinya. Namun saya telah menemukan sesuatu yang lebih aneh. Tampaknya PHP berfungsi dengan baik untuk salah satu dari Host Virtual yang sudah diatur, meskipun yang dilakukannya hanyalah mendefinisikan documentRoot di / var / www. Bagaimana ini mungkin?!
Jivings
1
Anda masih perlu membersihkan cache browser Anda dan memulai kembali apache.
Francesco
3

Nah setelah tidak ada lagi yang berhasil dan Apache menjadi sangat membingungkan saya akhirnya hanya membersihkan semua paket Apache dan menginstalnya kembali.

Tampaknya bekerja dengan baik sekarang, siapa yang tahu apa yang salah dengan itu ....

EDIT

Saya menemukan apa yang salah ketika saya mengatur pengaturan konfigurasi Apache saya lagi. [Entri blog ini] [1] menjelaskannya.

Ternyata meskipun modul userdir tidak aktif digunakan, sisa file situs berada di folder ~ / public_html saya, dan php dinonaktifkan untuk semua yang ada di sana.

Saya kira ini pasti merupakan tambahan baru untuk modul php yang tidak ada dalam pengaturan Karmic saya.

Jivings
sumber
1
Itu harus terkait dengan masalah konfigurasi. Pada peningkatan, tidak ada file dalam /etcdisalin afaik (setidaknya, seseorang memiliki masalah dengan /etc/init.d/apache2tidak dibuat pada instal ulang, hanya pada pembersihan + instal)
Lekensteyn
Anehnya itu bekerja sebelum upgrade sistem saya kemudian ...
Jivings
kemungkinan perubahan fitur kemudian. Anda tidak dapat mengharapkan setiap peningkatan untuk menghormati pengaturan konfigurasi lama. Beberapa modifikasi akan masuk akal bagi mayoritas tetapi tidak untuk sebagian lainnya.
Lekensteyn
Memang. Terima kasih telah membantu saya menyelesaikannya, sangat saya hargai :)
Jivings
1

yang php5.conffile dalam /etc/apache2/mods-enabledmemiliki beberapa baris di bagian bawah yang menjaga php dari mengeksekusi dalam direktori pengguna, jadi tergantung pada konfigurasi Anda, ini bisa menjadi masalah juga. Anda bisa mengomentari baris ini dan memuat ulang apache2

Jeff
sumber