De ce nu rulează php? (Programare, Php, Apache, Ubuntu, Amazon Web Services)

Christian a intrebat.

Am văzut răspunsurile la această întrebare de multe ori, dar cele mai multe se termină fie fără răspuns, fie spunându-i celui care întreabă să pună asta:

<?php phpinfo() ?>

într-un fișier de test. Evident, dacă asta ar produce ceea ce se așteaptă, nu aș fi aici. În schimb, primesc o eroare 404.

Folosesc un server ubuntu 12.04 cu Amazon. Apache este instalat, php5 este instalat, iar apache a fost repornit. Am urmat următoarea secvență:

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

Fiecare dintre primele trei comenzi îmi dă acum „apache2 is already the newest version.0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded” Evident, înlocuiți apache2 cu php5 și libapache2-mod-php5 pentru celelalte două.

Aceasta este o modalitate sigură de a-mi spune că este instalat, corect? Ei bine, când folosesc comanda „top”, php nu este unul dintre serviciile care rulează, ceea ce îmi spune că nu rulează, corect?

Navigarea la adresa IP îmi oferă pagina „It Works!” de la Amazon, dar navigarea la orice altă pagină de pe server produce o eroare 404.

Orice ajutor este foarte apreciat.

Comentarii

  • phpinfo este o funcție. folosiți phpinfo(). –  > Por Mic1780.
  • La ce vă referiți prin orice alte pagini – user2541120
  • dacă primești erori 404 atunci înseamnă că celelalte pagini nu există. –  > Por Maximus2012.
  • îmi pare rău, am folosit phpinfo() –  > Por Christian.
  • Navigarea către orice alte fișiere pe care le-am creat. –  > Por Christian.
6 răspunsuri
castis

Verifică fișierele de configurare apache. Pentru Debian/Ubuntu sunt în /etc/apache2/sites-available/ pentru RedHat/CentOS/etc sunt în /etc/httpd/conf.d/. Dacă tocmai l-ați instalat, fișierul de acolo se numește probabil default.

Asigurați-vă că fișierul de configurare de acolo este îndreptat către folderul corect și apoi asigurați-vă că scripturile dvs. se află acolo.

Linia pe care o căutați în aceste fișiere este DocumentRoot /path/to/directory.

În cazul unei instalări goale, cel mai probabil fișierele php trebuie să fie în /var/www/.

De asemenea, va trebui să găsiți fișierul php.ini, care se află probabil la adresa /etc/php5/apache2/php.ini sau /etc/php.ini și să găsiți intrarea pentru display_errors și schimbați-o în On.

Comentarii

  • Ahh! Mulțumesc foarte mult! Am bănuit că am greșit locul, dar mi s-a spus că este directorul corect. Va trebui să notez asta pentru referințe viitoare. –  > Por Christian.
  • Încă nu sunt sigur de ce în „top” nu a apărut php, dar am creat un fișier php în acel director și funcționează foarte bine. –  > Por Christian.
  • top? ca în top comanda? Nu ar arăta php, ci apache. dar mă bucur că am putut ajuta! –  > Por castis.
  • Top va afișa php doar dacă php este configurat să ruleze ca un deamon fcgi. Configurația implicită îl va configura ca un modul apache. –  > Por datasage.
  • Ar fi frumos să se adauge, cum se activează. Este suficient să schimb valoarea Production în On, sau trebuie să elimin și punctul și virgula de la începutul liniei? –  > Por Sören.
MagicLAMP

O mare problemă este că PHP este dezactivat în mod implicit în directoarele personale ale utilizatorilor, deci dacă testați din ~/public_html nu funcționează. verificați /etc/apache2/mods-enabled/php5.conf

# Running PHP scripts in user directories is disabled by default
# 
# 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_flag engine Off
#    </Directory>
#</IfModule>

În afară de asta, instalarea în Ubuntu este foarte ușoară, deoarece toate lucrurile pe care trebuia să le puneți în httpd.conf sunt făcute automat.

Comentarii

  • Ce vrei să spui cu „dacă testezi din public_html”? Fișierele mele sunt în ´/var/www/html´ ar funcționa asta? –  > Por Sören.
  • Prin convenție, atunci când se face ca apache să servească pagini web din directorul personal al fiecăruia, se pune un folder public_html implicit în directorul personal al fiecăruia, iar apache poate fi configurat să servească de acolo. Răspunsul meu nu afectează site-urile /var/www/html, așa că, dacă aveți probleme cu servirea din acel director, trebuie să vă uitați la DirectoryRoot sau altceva. –  > Por MagicLAMP.
Dan

Pentru a răspunde la întrebarea inițială „De ce nu rulează php?” Fișierul pe care browserul îl cere trebuie să aibă extensia .php.Dacă fișierul are extensia .html, php nu va fi executat.

Dipankar Biswas

Scrieți în browser localhost:80//test5.php[unde 80 este portul dvs. și test.php este numele fișierului] în loc de c://xampp/htdocs/test.php.

davidgo

Când am instalat Apache și PHP sub Ubuntu 14.04, a trebuit să activez în mod special configurațiile php prin emiterea a2enmod php5-cgi

Comentarii

  • Ce înseamnă acest lucru? –  > Por Sören.
Mic1780

Trebuie să adăugați punct și virgulă la sfârșitul tuturor lucrurilor php, cum ar fi echo, funcții etc.

modificați <?php phpinfo() ?> în <?php phpinfo(); ?>

Dacă nu funcționează, folosiți funcția ini_set din php pentru a afișa erorile: ini_set('display_errors', 1);

Comentarii

  • dacă o funcție este singurul lucru din interiorul tag-urilor php, punctul și virgula nu contează. –  > Por castis.
  • aveți dreptate @castis. dar este cea mai bună practică. aruncați o privire aici: stackoverflow.com/a/2038751/1637737 așa că, de fapt, punctul și virgula este încă necesar. php este doar suficient de inteligent pentru a rezolva problemele pentru cei leneși. –  > Por Mic1780.
  • asta e drăguț și toate cele, dar nu-l ajută cu problema lui. –  > Por castis.