Verkkosivustohaku

Asenna PHP 8.1 ja määritä paikallinen kehitysympäristö Ubuntulle


Tämän oppaan aiemman version kirjoitti alenaholligan.

Johdanto

PHP on suosittu, avoimen lähdekoodin palvelinpuolen skriptikieli, joka on suunniteltu verkkokehitystä varten ja joka pyörittää merkittävää osaa internetistä blogeista ja verkkokaupoista suurimittaisiin sovelluksiin. Jokaisen uuden julkaisun myötä PHP tarjoaa parannettua suorituskykyä, tietoturvaa ja moderneja kehitysominaisuuksia, jotka auttavat kehittäjiä rakentamaan vankkaa ja skaalautuvaa ohjelmistoa.

PHP 8.1 on vakaa, pitkäaikaiseen tukeen perustuva julkaisu, joka tuo merkittäviä parannuksia ja uusia kielen ominaisuuksia säilyttäen samalla luotettavuuden. PHP 8.1:n asentaminen Ubuntulle varmistaa, että paikallinen kehitysympäristösi on ajan tasalla, turvallinen ja yhteensopiva laajalti käytettyjen kehysten ja alustojen, kuten WordPressin, Laravelin ja räätälöityjen PHP-sovellusten kanssa.

Tämä opas ohjaa sinut PHP 8.1:n asentamiseen Ubuntulle, sen konfigurointiin Apachen tai Nginxin kanssa, tärkeimpien PHP-laajennusten asentamiseen ja Composerin asentamiseen riippuvuuksien hallintaa varten. Opit myös tarkistamaan asennuksesi ja ratkaisemaan yleisimpiä ongelmia.

Ota PHP-sovelluksesi käyttöön GitHubista käyttämällä Linux-Console.netin sovellusalustaa. Anna Linux-Console.netin keskittyä sovelluksesi skaalaamiseen.

Keskeiset kohdat

  • PHP 8.1:n asennus Ubuntu 22.04:ssä: Ubuntu 22.04 LTS sisältää PHP 8.1:n oletusarkistoissaan, mikä mahdollistaa vakaan, pitkäaikaisesti tuetun PHP-version asentamisen käyttämällä apt-komentoa ilman kolmansien osapuolten PPA:ta. Tämä takaa ennakoitavat päivitykset, tietoturvakorjaukset ja yhteensopivuuden nykyaikaisten PHP-kehysten kanssa.

  • Välttämättömät PHP-laajennukset todellisille projekteille: Suurin osa tuotantotason PHP-sovelluksista luottaa laajennuksiin kuten mysql, curl, xml, mbstring, zip, gd ja bcmath. Näiden asentaminen varhaisessa vaiheessa estää ajonaikaiset virheet myöhemmin ja takaa yhteensopivuuden esimerkiksi Laravel-, Symfony- ja WordPress-kehysten kanssa.

  • Apache- vai Nginx-valinta PHP-kehitykseen: Apache voi suorittaa PHP:n suoraan käyttämällä mod_php-moduulia, kun taas Nginx vaatii PHP‑FPM:n pyyntöjen käsittelyyn. Molemmat menetelmät toimivat hyvin paikallisessa kehityksessä, mutta PHP‑FPM vastaa paremmin nykyaikaisia tuotantoympäristöjä ja skaalautuu paremmin kuormituksen kasvaessa.

  • Composer modernien PHP-työnkulkujen perustana: Composer hallitsee projektin riippuvuuksia käyttämällä composer.json ja composer.lock -tiedostoja, varmistaen yhtenäiset rakennukset eri koneilla. Se on olennainen kehyksien asentamiseen, automaattisten lataajien luomiseen ja luotettavien riippuvuuksien versioiden ylläpitämiseen yhteistyössä tehtävissä PHP-projekteissa.

  • PHP:n määrittäminen erityisesti kehitystä varten: Kehitysympäristöt hyötyvät yksityiskohtaisesta virheraportoinnista, korkeammista muistirajoista ja pidemmistä suoritusaikojen rajoista. Näiden asetusten säätäminen tiedostossa php.ini auttaa havaitsemaan virheitä nopeasti kehityksen aikana, mutta ne on aina palautettava tuotantoon siirrettäessä.

  • Vianmääritys ja validointi ovat osa asennusta: PHP:n tarkistaminen komennolla php -v, ladattujen laajennusten tarkistaminen sekä Apache-, Nginx- tai PHP‑FPM-lokien läpikäynti ovat kriittisiä vaiheita. Suurin osa asennusongelmista johtuu puuttuvista laajennuksista, käyttöoikeuksista tai väärin konfiguroiduista verkkopalvelinohjeista.

Edellytykset

Tämän oppaan suorittamiseen tarvitset:

  • Paikallinen tietokone tai virtuaalipalvelin, jossa on Ubuntu (yhteensopiva Ubuntu 22.04 LTS:n ja sitä uudemman version kanssa)
  • Järjestelmänvalvojan (sudo) käyttöoikeus koneeseen
  • Aktiivinen Internet-yhteys
  • Perustason tuntemus komentorivistä

Jos olet ottamassa käyttöön uutta Ubuntu-palvelinta, katso oppaamme Ubuntun peruspalvelinasetuksista.

Vaihe 1 — PHP 8.1:n asentaminen

Suoritat asennuksen ja määrityksen komentorivillä, mikä on ei-grafiikkaa käyttävä tapa olla vuorovaikutuksessa tietokoneesi kanssa. Toisin sanoen sen sijaan, että klikkaisit painikkeita, kirjoitat tekstiä ja saat tietokoneeltasi palautetta myös tekstinä.

Komentorivi, jota kutsutaan myös kuoreksi tai terminaaliksi, voi auttaa sinua muokkaamaan ja automatisoimaan monia päivittäisiä tietokoneella tekemiäsi tehtäviä, ja se on olennainen työkalu ohjelmistokehittäjille. On olemassa monia komentorivikomentoja, joita kannattaa oppia, jotta voit tehdä tehokkaampia asioita. Artikkeli Linux-terminaaliin johdanto voi auttaa sinua tutustumaan paremmin terminaaliin.

Huomautus: Jos olet uusi Ubuntun käyttäjä, suosittelemme tutustumaan Ubuntu-dokumentaatioomme saadaksesi lisäohjeita järjestelmän hallintaan.

Ubuntussa voit löytää Päätte-sovelluksen klikkaamalla Ubuntu-kuvaketta näytön vasemmassa yläkulmassa ja kirjoittamalla terminal hakupalkkiin. Klikkaa Päätte-sovelluksen kuvaketta avataksesi sen. Vaihtoehtoisesti voit painaa samalla kertaa näppäimiä CTRL, ALT ja T avataksesi Päätte-sovelluksen automaattisesti.

Huomautus: Ubuntussa 22.04 LTS PHP 8.1 on saatavilla oletusvarastoissa. Kun asennat PHP:n määrittämättä versiota Ubuntussa 22.04, järjestelmä asentaa oletuksena PHP 8.1:n.

Jos sinun täytyy hallita useita PHP-versioita tai asentaa eri versio, harkitse phpenv:n tai phpbrewin käyttöä versionhallintaan.

Suorita seuraavat komennot päivittääksesi saatavilla olevien pakettien luettelon, ja asenna sitten PHP 8.1:

sudo apt update
sudo apt install --no-install-recommends php8.1

Lippu --no-install-recommends varmistaa, ettei muita paketteja, kuten Apache-verkkopalvelinta, asenneta.

Tarkista PHP-versiotietosi seuraavalla komennolla:

php -v

Saat tällaisen tulosteen:

PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies

Tämä asennus testattiin Ubuntu 22.04 LTS:llä käyttäen PHP 8.1 -paketteja virallisista Ubuntun arkistoista.

Asenna tärkeät PHP-laajennukset verkkokehitystä varten:

sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath

Tämä komento asentaa seuraavat moduulit:

  • php8.1-cli - komentotulkki, hyödyllinen PHP-skriptien testaamiseen komentoriviltä tai yleisten komentoriviohjelmointitehtävien suorittamiseen
  • php8.1-common - dokumentaatio, esimerkit ja yleiset moduulit PHP:lle
  • php8.1-mysql - MySQL-tietokantojen kanssa työskentelyyn
  • php8.1-zip - pakattujen tiedostojen käsittelyyn
  • php8.1-gd - kuvien käsittelyyn
  • php8.1-mbstring - käytetään hallitsemaan ei-ASCII-merkkijonoja
  • php8.1-curl - mahdollistaa HTTP-pyyntöjen tekemisen PHP:ssä
  • php8.1-xml - XML-tietojen käsittelyyn
  • php8.1-bcmath - käytetään, kun työskennellään tarkkuusliukuluvuilla

PHP:n asetustiedostot tallennetaan kansioon /etc/php/8.1/. Pääasiallinen asetustiedosto on php.ini, joka voi sijaita eri kansioissa asennuksestasi riippuen:

  • CLI-määritykset: /etc/php/8.1/cli/php.ini
  • Apache-konfiguraatio: /etc/php/8.1/apache2/php.ini (jos Apache on asennettu)
  • PHP-FPM-asetukset: /etc/php/8.1/fpm/php.ini (jos PHP-FPM on asennettu)

Tarkista asennetut laajennukset:

php -m

Tämä luettelee kaikki ladatut PHP-moduulit. Jos php -v näyttää eri version kuin odotettu, sinulla saattaa olla useita PHP-versioita asennettuna. Käytä php8.1 -v varmistaaksesi erityisesti PHP 8.1:n.

Olet asentanut PHP:n ja varmistanut käytössä olevan version. Olet myös asentanut tarvittavat PHP-moduulit ja pystynyt listaamaan ladatut moduulit.

Vaihe 2 — PHP:n määrittäminen Apachella

Asenna Apache PHP -moduuli:

sudo apt install libapache2-mod-php8.1

Ota moduuli käyttöön ja käynnistä Apache uudelleen:

sudo a2enmod php8.1
sudo systemctl restart apache2

mod_php:n ymmärtäminen: mod_php-moduuli upottaa PHP:n suoraan Apachen prosessiin. Kun Apache saa pyynnön PHP-tiedostosta, se käsittelee sen sisäisesti upotetulla PHP-tulkilla. Tämä eroaa Nginxistä, joka vaatii erillisen PHP-FPM-palvelun. a2enmod-komento luo symbolisen linkin /etc/apache2/mods-enabled/-hakemistoon moduulin aktivoimiseksi.

Varmista, että Apache käsittelee PHP:tä oikein luomalla testitiedosto Apachen dokumenttijuureen (tyypillisesti /var/www/html):

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Vieraile selaimellasi osoitteessa http://localhost/info.php. Sinun pitäisi nähdä PHP:n konfiguraatiotietosivu. Poista tämä tiedosto testauksen jälkeen turvallisuuden vuoksi:

sudo rm /var/www/html/info.php

Apache PHP -ongelmien vianmääritys

Jos Apache ei käynnisty mod_php:n asentamisen jälkeen:

Tarkista Apachen virheloki:

sudo tail -20 /var/log/apache2/error.log

Yleisiä ongelmia ovat:

  • Ristiriitaiset PHP-moduulit: Jos sinulla on useita PHP-versioita, poista ensin käytöstä muut PHP-moduulit komennolla sudo a2dismod php7.4 (jos niitä on)
  • Syntaksivirheitä Apachen määrityksessä: Suorita sudo apache2ctl configtest tarkistaaksesi

Jos käyt localhostissa ja näet “Se toimii!”, mutta PHP-tiedostot näkyvät pelkkänä tekstinä:

Tämä tarkoittaa, ettei Apache käsittele PHP:tä. Tarkista:

  1. Varmista, että moduuli on otettu käyttöön:
apache2ctl -M | grep php
  1. Jos mitään ei näy, moduulia ei ole ladattu. Ota se uudelleen käyttöön:
sudo a2enmod php8.1
sudo systemctl restart apache2
  1. Tarkista, että PHP-tiedostollasi on oikea tiedostopääte (.php) ja että se sisältää PHP-koodia

Jos saat 403 Forbidden -virheen:

Tarkista tiedoston käyttöoikeudet:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Turvallisuusvinkki: phpinfo()-funktio paljastaa yksityiskohtaista järjestelmätietoa. Älä koskaan jätä phpinfo()-tietoa sisältäviä tiedostoja tuotantopalvelimille.

Apachen virtuaalipalvelimen määritys

Paikalliseen kehitykseen mukautetuilla domaineilla luo virtuaalipalvelin:

sudo nano /etc/apache2/sites-available/example.local.conf

Lisää tämä asetuskokonaisuus:

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot /var/www/example.local
    <Directory /var/www/example.local>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • ServerName: Tämän virtuaalipalvelimen verkkotunnus
  • DocumentRoot: Missä PHP-tiedostosi sijaitsevat
  • AllowOverride All: Sallii .htaccess-tiedostojen ohittaa Apachen asetuksia (tarvitaan esimerkiksi Laravelin kaltaisille kehyksille)
  • Vaadi kaikki myönnetty: Salli pääsy hakemistoon

Luo hakemisto, ota sivusto käyttöön ja käynnistä Apache uudelleen:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2

Lisää verkkotunnus /etc/hosts-tiedostoosi paikallista käyttöä varten:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Valitseminen Apachen ja Nginxin välillä

Ennen kuin määrität verkkopalvelimesi, harkitse, mikä niistä sopii tarpeisiisi:

OminaisuusApache mod_php:n kanssaNginx PHP-FPM:n kanssa
PHP:n käsittelyUpotettu Apache-prosessiinEri PHP-FPM-palvelu
Muistin käyttöKorkeampi (PHP kussakin Apache-prosessissa)Alempi (erillinen prosessipooli)
SuorituskykyHyvä vähäliikenteiselle tai keskitason liikenteelleParempi suuren liikenteen ja rinnakkaisten pyyntöjen käsittelyyn
MäärityksetYksinkertaisempi alkuasetusten määrittäminenMonimutkaisempi (vaatii PHP-FPM-määrityksen)
.htaccess-tukiAlkuperäinen tukiEi tuettu (täytyy määrittää palvelinlohkoissa)
TuotantokäyttöYleistä jaetussa webhotellissaYleistä nykyaikaisessa käyttöönotossa
OppimiskäyräHelpompaa aloittelijoilleJyrkempi oppimiskäyrä
ResurssitehokkuusVähemmän tehokas kuormituksen ollessa korkeaTehokkaampi suurella kuormituksella

Milloin valita Apache:

  • Olet tuttu Apachen kanssa tai tarvitset .htaccess-tuen
  • Yksinkertaisen kehitysympäristön perustaminen
  • Työskentely kehysten kanssa, jotka tukeutuvat vahvasti .htaccess-tiedostoon (joissakin WordPress-asennuksissa)
  • Haluat yksinkertaisemman alkuasetuksen

Milloin valita Nginx:

  • Tarvitset paremman suorituskyvyn suurella kuormituksella
  • Haluat peilata nykyaikaisia tuotantoympäristöjä
  • Olet rakentamassa sovelluksia, jotka skaalautuvat
  • Pidät enemmän modernimmasta arkkitehtuurista

Molemmat toimivat yhtä hyvin paikallisessa kehityksessä. Valinta perustuu usein henkilökohtaiseen mieltymykseen tai olemassa olevaan infrastruktuuriin.

Vaihe 3 — PHP:n määrittäminen Nginxin kanssa

Asenna PHP-FPM (FastCGI-prosessinhallinta):

sudo apt install php8.1-fpm

Käynnistä ja ota PHP-FPM käyttöön:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

PHP-FPM:n ja FastCGI:n ymmärtäminen: Toisin kuin Apachen mod_php, Nginx ei käsittele PHP:tä suoraan. PHP-FPM (FastCGI Process Manager) toimii erillisenä palveluna, jonka kanssa Nginx kommunikoi FastCGI-protokollaa käyttäen. FastCGI on binäärinen protokolla ohjelmien liittämiseen web-palvelimiin—se on nopeampi kuin perinteinen CGI, koska se pitää prosessit aktiivisina pyyntöjen välillä.

Kun Nginx vastaanottaa pyynnön PHP-tiedostosta, se välittää pyynnön PHP-FPM:lle Unix-socketin (tai TCP-yhteyden) kautta. PHP-FPM käsittelee PHP-koodin ja palauttaa tuloksen Nginxille, joka sitten lähettää sen asiakkaalle. Tämä erottelu antaa PHP-FPM:lle mahdollisuuden hallita omaa prosessipooliaan, mikä parantaa suorituskykyä ja resurssien hallintaa.

Nginx-palvelimen lohkon määritys

Luo palvelinlohkon määritys:

sudo nano /etc/nginx/sites-available/example.local

Lisää tämä asetuskokonaisuus:

server {
    listen 80;
    server_name example.local;
    root /var/www/example.local;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Määrityksen selitys:

  • root: Hakemisto, jossa PHP-tiedostosi sijaitsevat
  • location ~ \.php$: Vastaa kaikkiin pyyntöihin, jotka päättyvät .php, käyttäen säännöllisiä lausekkeita
  • include snippets/fastcgi-php.conf: Sisältää Nginxin oletusarvoisen FastCGI-konfiguraation (asettaa SCRIPT_FILENAME ja muut tarvittavat muuttujat)
  • fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: Unix-soketti, johon PHP-FPM kuuntelee. Näin Nginx kommunikoi PHP-FPM:n kanssa. Soketin polku on määritelty tiedostossa /etc/php/8.1/fpm/pool.d/www.conf

Ota sivusto käyttöön ja testaa määritykset:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -t

Jos testi onnistuu, käynnistä Nginx uudelleen:

sudo systemctl restart nginx

Lisää verkkotunnus tiedostoon /etc/hosts:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Luo testattava PHP-tiedosto:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.php

Vieraile osoitteessa http://example.local/info.php. Sinun pitäisi nähdä PHP:n asetussivu. Poista testitiedosto tarkistuksen jälkeen:

sudo rm /var/www/example.local/info.php

Nginx PHP -ongelmien vianetsintä

Jos saat “502 Bad Gateway” -virheen:

Tämä tarkoittaa, että Nginx ei voi kommunikoida PHP-FPM:n kanssa. Tarkista:

  1. Varmista, että PHP-FPM on käynnissä:
sudo systemctl status php8.1-fpm
  1. Tarkista, että soketin polku on oikea. Soketin sijainti määritellään tiedostossa /etc/php/8.1/fpm/pool.d/www.conf:
grep listen /etc/php/8.1/fpm/pool.d/www.conf

Sinun pitäisi nähdä jotain sellaista kuin listen=/run/php/php8.1-fpm.sock. Polun Nginx-konfiguraatiossasi on täsmättävä tarkalleen. Huomaa, että /var/run on usein symbolinen linkki /run:iin, joten molemmat polut toimivat.

  1. Tarkista soket-tiedoston käyttöoikeudet:
ls -la /var/run/php/php8.1-fpm.sock

Socketin tulisi olla omistajana www-data tai käyttäjä, jolla Nginx pyörii. Jos oikeudet ovat väärin:

sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock
  1. Tarkista Nginx-virheloki:
sudo tail -20 /var/log/nginx/error.log

Saatat nähdä virheitä, kuten:

connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)

Tämä tarkoittaa, että socket-polku on virheellinen tai PHP-FPM ei ole käynnissä.

Jos PHP-tiedostot latautuvat suorittamisen sijaan:

Tämä tarkoittaa, että Nginx ei lähetä PHP-tiedostoja PHP-FPM:lle. Tarkista:

  • Palvelinasetuksissasi on location ~ \.php$ -lohko
  • fastcgi_pass-direktiivi osoittaa oikeaan socketiin
  • Olet käynnistänyt Nginxin uudelleen muutosten jälkeen

Jos saat “Tiedostoa ei löydy” -virheitä:

Tarkista, että snippets/fastcgi-php.conf on olemassa:

ls -la /etc/nginx/snippets/fastcgi-php.conf

Tämä tiedosto määrittää SCRIPT_FILENAME, joka kertoo PHP-FPM:lle, mikä tiedosto suoritetaan. Ilman sitä PHP-FPM ei tiedä, mitä tiedostoa käsitellä.

Vaihe 4 — PHP:n määrittäminen kehitystä varten

Määritä PHP kehitystä varten säätämällä virheraportointia, näytön asetuksia ja muistirajoja tiedostossa php.ini. Nämä asetukset poikkeavat tuotantoympäristön asetuksista.

PHP käyttää erillisiä asetustiedostoja komentorivikäyttöä (CLI) ja verkkopalvelinkäyttöä varten. Muokkaa sopivaa tiedostoa:

CLI:ssä (kun suoritetaan PHP:tä terminaalista):

sudo nano /etc/php/8.1/cli/php.ini

Verkkopalvelimelle (Apache tai Nginx PHP-FPM:llä):

# For Apache
sudo nano /etc/php/8.1/apache2/php.ini

# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.ini

Huom: Jos käytät sekä CLI:tä että verkkopalvelinta, sinun täytyy konfiguroida molemmat tiedostot erikseen. Muutokset tiedostossa cli/php.ini eivät vaikuta verkkopyyntöihin, ja muutokset tiedostoissa apache2/php.ini tai fpm/php.ini eivät vaikuta CLI-skripteihin.

Keskeiset kehitysasetukset

Etsi ja päivitä nämä asetukset php.ini-tiedostossasi:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_York

Mitä kukin asetus tekee:

  • display_errors=On: Näyttää PHP-virheet suoraan selaimessa (hyödyllistä virheenkorjauksessa, vaarallista tuotannossa)
  • display_startup_errors=On: Näyttää virheet, jotka ilmenevät PHP:n käynnistyksen aikana
  • error_reporting=E_ALL: Raportoi kaikki virhetyypit (varoitukset, ilmoitukset jne.)
  • log_errors=On: Kirjaa virheet lokitiedostoon
  • error_log: Mihin PHP kirjoittaa virhelokit
  • memory_limit=256M: Maksimi muisti, jota skripti voi käyttää (lisää, jos saat “muisti loppui” -virheitä)
  • upload_max_filesize=64M: Tiedostojen enimmäiskoko, joka voidaan ladata
  • post_max_size=64M: Suurin sallittu koko POST-datalle (täytyy olla suurempi kuin upload_max_filesize)
  • max_execution_time=300: Maksimi aika, jonka skripti voi suorittaa (sekunteina)
  • date.timezone: Määrittää oletusaikavyöhykkeen (käytä paikallista aikavyöhykettäsi: Asia/Kolkata, Europe/London, UTC jne.)

Tuotantovaroitus: Älä koskaan käytä näitä kehitysasetuksia tuotannossa. Aseta aina display_errors=Off ja käytä sopivia virheraportointitasoja tuotantopalvelimilla.

Tee muutokset ja käynnistä verkkopalvelimesi uudelleen:

# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm

Varmistetaan kokoonpanosi

Tarkista, tuliko muutoksesi voimaan:

# For CLI
php -i | grep display_errors

# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php

Vieraile testitiedostossa selaimellasi ja etsi display_errors. Sen tulisi näyttää On. Poista testitiedosto tarkistamisen jälkeen.

Jos muutoksesi eivät näy:

  1. Varmista, että muokkasit oikeaa php.ini-tiedostoa (CLI vs verkkopalvelin)
  2. Tarkista asetusten nimien kirjoitusvirheet (ne ovat kirjainkoon huomioivia)
  3. Käynnistä verkkopalvelimesi uudelleen muutosten tekemisen jälkeen
  4. Joitakin asetuksia voidaan ohittaa projektihakemistosi .htaccess (Apache) tai php.ini tiedoston avulla

Voisit alkaa käyttää PHP:tä heti nyt, mutta todennäköisesti haluat käyttää erilaisia kirjastoja PHP-sovellusten nopeaan rakentamiseen. Ennen kuin testaat PHP-ympäristöäsi, asenna ensin riippuvuushallinta projekteillesi.

Vaihe 5 — Composerin asennus riippuvuuksien hallintaa varten (valinnainen)

Kirjastot ovat kokoelmia koodia, jotka voivat auttaa sinua ratkaisemaan tavallisia ongelmia ilman, että sinun tarvitsee kirjoittaa kaikkea itse. Koska saatavilla on monia kirjastoja, riippuvuuksien hallintatyökalun käyttö auttaa sinua hallitsemaan useita kirjastoja sitä mukaa kun tulet kokeneemmaksi PHP:n kirjoittamisessa.

Composer on työkalu riippuvuuksien hallintaan PHP:ssä. Sen avulla voit ilmoittaa, mitä kirjastoja projektisi tarvitsee, ja se hallinnoi näiden pakettien asentamista ja päivittämistä.

Vaikka samankaltainen, Composer ei ole paketinhallinta samalla tavalla kuin yum tai apt. Se käsittelee “paketteja” eli kirjastoja, mutta hallinnoi niitä projektikohtaisesti, asentamalla ne hakemistoon (esim. vendor) projektisi sisällä. Oletuksena se ei asenna mitään globaaliin ympäristöön. Siksi se on riippuvuudenhallintaohjelma. Se kuitenkin tukee globaalin projektin hallintaa mukavuuden vuoksi global-komennon kautta.

Tämä idea ei ole uusi, ja Composer on vahvasti inspiroitunut Noden npm:stä ja Rubyn bundler:stä.

Oletetaan:

  • Sinulla on projekti, joka riippuu useista kirjastoista.
  • Jotkut näistä kirjastoista riippuvat muista kirjastoista.

Säveltäjä:

  • Mahdollistaa sinun ilmoittaa kirjastot, joihin luotat.
  • Selvittää, mitkä versiot mistäkin paketeista voidaan ja täytyy asentaa, ja asentaa ne lataamalla ne projektiisi.
  • Mahdollistaa kaikkien riippuvuuksiesi päivittämisen yhdellä komennolla.
  • Mahdollistaa Peruskäyttö-luvun tarkastelun saadaksesi lisätietoja riippuvuuksien ilmoittamisesta.

Lataa Composerin asennusohjelma:

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

Varmista asennustiedoston eheys tarkistamalla sen SHA-384-tiiviste. Hanki uusin tiiviste:

HASH=$(curl -sS https://composer.github.io/installer.sig)

Varmista, että tiiviste täsmää:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

Sinun pitäisi nähdä:

Installer verified

Jos näet Installer corrupt, lataus oli kesken tai sitä on muunneltu. Lataa asennustiedosto uudelleen ja tarkista sen tiiviste. Jos ongelma jatkuu, tarkista internet-yhteytesi tai kokeile ladata tiedosto toisesta verkosta.

Asenna Composer globaalisti:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Saat tulosteen, joka on samanlainen kuin tämä:

All settings correct for using Composer
Downloading...

Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Testaa asennuksesi:

composer

Saat tulosteen, joka näyttää seuraavalta:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display help for the given command. When no command is given display help for the list command
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
      --no-scripts               Skips the execution of all scripts defined in composer.json file.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .

Tämä varmistaa, että Composer asennettiin onnistuneesti järjestelmääsi ja että se on käytettävissä koko järjestelmässä.

Huomautus: Jos haluat käyttää erillisiä Composer-suoritustiedostoja jokaisessa palvelimellasi isännöimässäsi projektissa, voit asentaa sen paikallisesti, projektikohtaisesti. Tämä menetelmä on myös hyödyllinen, kun järjestelmän käyttäjälläsi ei ole lupaa asentaa ohjelmistoja koko järjestelmään.

Tätä varten käytä komentoa php /tmp/composer-setup.php ilman argumentteja. Tämä komento luo composer.phar-tiedoston nykyiseen hakemistoosi, jonka voit suorittaa komennolla php composer.phar.

Vaihe 6 — Composerin käyttäminen PHP-projektissa

Viimeisenä vaiheena voit valinnaisesti alustaa projektisi komennolla composer init. Tämä luo composer.json-tiedoston, joka hallinnoi projektisi riippuvuuksia. Projektin alustaminen antaa myös mahdollisuuden määrittää projektin tiedot, kuten tekijän ja lisenssin, sekä käyttää Composerin automaattista lataustoiminnallisuutta. Voit määrittää riippuvuudet nyt tai lisätä ne myöhemmin.

Luo projektihakemisto ja alusta Composer:

cd ~
mkdir example-project
cd example-project
composer init

Tämän komennon suorittaminen käynnistää asennusohjatun. Ohjatussa voit myöhemmin päivittää antamiasi tietoja, joten voit rauhassa jättää oletukset ja painaa vain ENTER. Jos et ole valmis asentamaan riippuvuuksia, voit valita ei. Syötä tietosi jokaisessa kehotteessa:

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n

{
    "name": "sammy/project1",
    "type": "project",
    "authors": [
        {
            "name": "Sammy",
            "email": "sammy@linux-console.net"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

Ennen kuin vahvistat luomisen, näet esimerkin composer.json-tiedostosta, jonka ohjattu toiminto luo. Jos kaikki näyttää hyvältä, voit vahvistaa oletusvalinnan kyllä. Jos sinun täytyy aloittaa alusta, valitse ei.

Ensimmäisellä kerralla, kun määrität jonkin riippuvuuden, Composer luo vendor-kansion. Kaikki riippuvuudet asennetaan tähän vendor-kansioon. Composer luo myös composer.lock-tiedoston. Tämä tiedosto määrittää täsmällen version jokaisesta riippuvuudesta ja aliriippuvuudesta, jota käytetään projektissasi. Tämä varmistaa, että kaikilla koneilla, joilla ohjelmaasi ajetaan, käytetään täsmälleen samaa versiota kustakin paketista.

Huomautus: vendor-kansiota ei tulisi koskaan lisätä versionhallintaasi (VCS). vendor-kansio sisältää vain paketteja, jotka olet asentanut muilta toimittajilta. Nämä yksittäiset toimittajat ylläpitävät oman koodinsa omissa versionhallintajärjestelmissään. Sinun tulisi seurata vain itse kirjoittamaasi koodia. Sen sijaan, että lisäisit vendor-kansion, sinun tarvitsee lisätä vain composer.json ja composer.lock -tiedostot. Voit oppia lisää tiettyjen tiedostojen ohittamisesta artikkelista How To Use Git: A Reference Guide.

Nyt kun sinulla on PHP asennettuna ja tapa hallita projektisi riippuvuuksia Composerin avulla, olet valmis testaamaan ympäristöäsi.

Vaihe 7 — PHP-ympäristön testaaminen

Luo ja suorita perus PHP-skripti testataksesi asennuksesi:

nano hello.php

Lisää seuraava PHP-koodi:

<?php
echo 'Hello World!';
?>

Tallenna ja sulje tiedosto (paina CTRL+X, sitten Y ja lopuksi ENTER). Suorita skripti:

php hello.php

Jos PHP käsitellään oikein, näet vain lainausmerkkien sisällä olevat merkit:

Hello World!

PHP on käsitellyt skriptin onnistuneesti, mikä tarkoittaa, että PHP-ympäristösi on asennettu onnistuneesti ja olet valmis jatkamaan ohjelmointimatkaasi.

Vaihe 8 — Todellisten PHP-projektien perustaminen

Nykyaikaiset PHP-kehykset, kuten Laravel, Symfony ja WordPress, vaativat tiettyjä PHP-laajennuksia ja Composeria. Asenna kehys käyttämällä Composeria tai kehyksen omaa asennusohjelmaa, ja määritä sitten verkkopalvelimesi osoittamaan projektin julkiseen hakemistoon.

Laravelin asentaminen

Asenna Laravel Composerin avulla:

composer create-project laravel/laravel my-laravel-app
cd my-laravel-app

Tämä komento lataa Laravelin ja kaikki sen riippuvuudet. Prosessi voi kestää muutaman minuutin.

Laravel vaatii nämä PHP-laajennukset (asennettu vaiheessa 1):

  • php8.1-mbstring - Monitavuisen merkkijonon käsittely
  • php8.1-xml - XML:n jäsentäminen
  • php8.1-curl - HTTP-pyynnöt
  • php8.1-zip - Arkistojen käsittely
  • php8.1-bcmath - Mielivaltaisen tarkkuuden matematiikka

Jos Laravel ilmoittaa „mbstring puuttuu“, vaikka olisit asentanut sen:

Tämä tarkoittaa yleensä, että laajennus on asennettu mutta ei ole ladattu. Tarkista:

  1. Varmista, että laajennus on asennettu:
php -m | grep mbstring
  1. Jos sitä ei ole, asenna se:
sudo apt install php8.1-mbstring
  1. Jos se on asennettu mutta ei näy, käynnistä verkkopalvelimesi uudelleen:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  1. Tarkista, mitä php.ini-tiedostoa käytetään. Laravelin asennusohjelma käyttää CLI PHP:tä, joten tarkista:
php --ini

Varmista, että laajennus on otettu käyttöön CLI:n php.ini-tiedostossa.

Laravelin asennuksen tarkistaminen:

Asennuksen valmistuttua käynnistä Laravelin kehityspalvelin:

php artisan serve

Sinun pitäisi nähdä:

INFO  Server running on [http://127.0.0.1:8000]

Vieraile selaimellasi osoitteessa http://localhost:8000. Näet Laravelin tervetulosivun.

Tuotannon kaltaisissa ympäristöissä Apachen tai Nginx:n kanssa:

Määritä verkkopalvelimesi osoittamaan public-hakemistoon (ei projektin juureen). Laravelin public/index.php on kaikkien pyyntöjen sisäänkäyntipiste.

Huom: Lue lisää Laravelista oppaastamme 'Kuinka asentaa Laravel Ubuntuun'.

WordPressin asentaminen

Lataa ja pura WordPress:

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress

WordPress vaatii MySQL- tai MariaDB-tietokannan. Asenna MySQL tarvittaessa:

sudo apt install mysql-server
sudo mysql_secure_installation

mysql_secure_installation-skripti kehottaa sinua tekemään seuraavat toimet:

  • Aseta pääkäyttäjän salasana
  • Poista nimettömät käyttäjät
  • Estä root-käyttäjän etäkirjautuminen
  • Poista testitietokanta
  • Lataa valtuustaulukot uudelleen

Luo tietokanta ja käyttäjä WordPressille:

sudo mysql -u root -p

MySQL-kehotteessa:

CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Korvaa secure_password vahvalla salasanalla. WordPress käyttää näitä tunnuksia yhdistääkseen tietokantaan.

Jos WordPress ei pysty yhdistämään tietokantaan:

  1. Varmista, että MySQL on käynnissä:
sudo systemctl status mysql
  1. Testaa tietokantayhteys:
mysql -u wpuser -p wordpress_db

Jos tämä epäonnistuu, tarkista:

  • Käyttäjätunnus ja salasana ovat oikein
  • Tietokanta on olemassa: SHOW DATABASES;
  • Käyttäjällä on seuraavat oikeudet: SHOW GRANTS FOR 'wpuser'@'localhost';
  1. Tarkista, että PHP:n MySQL-laajennus on asennettu:
php -m | grep mysql

Jos sitä ei ole, asenna se:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx

WordPressin asennuksen viimeistely:

Määritä verkkopalvelimesi osoittamaan kohtaan /var/www/wordpress (katso vaihe 2 Apachessa tai vaihe 3 Nginxissä). Vieraile sivustolla selaimessasi. WordPress kehottaa sinua:

  1. Valitse kielesi
  2. Syötä tietokannan kirjautumistiedot (käytä luomaasi tietokantaa, käyttäjätunnusta ja salasanaa)
  3. Viimeistele asennus

Huomautus: Yksityiskohtaisia ohjeita WordPressin asentamiseen varten katso Kuinka asentaa WordPress LAMP:in avulla Ubuntussa.

Symfonyn asetusten määrittäminen

Asenna Symfony Composerin avulla:

composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-app

Symfony vaatii samat laajennukset kuin Laravel. Käynnistä kehityspalvelin:

symfony server:start

Tai käytä PHP:n sisäänrakennettua palvelinta:

php -S localhost:8000 -t public

Jos Symfony-asennus epäonnistuu laajennusvirheiden vuoksi:

Tarkista, että kaikki vaaditut laajennukset on asennettu ja ladattu:

php -m | grep -E 'mbstring|xml|curl|zip|bcmath'

Jos joitakin puuttuu, asenna ne ja käynnistä verkkopalvelimesi uudelleen.

Vaihe 9 — Parhaat käytännöt paikalliseen kehitykseen

Varmista paikallinen ympäristösi, käytä versiohallintaa, määritä oikeat tiedostojen käyttöoikeudet ja ota käyttöön ympäristökohtaiset asetukset. Nämä käytännöt ehkäisevät tietoturvaongelmia ja tekevät kehityksestä sujuvampaa.

Turvallisuusnäkökohdat

Jopa paikallisessa kehityksessä noudata tietoturvan parhaita käytäntöjä:

  1. Poista käytöstä vaaralliset PHP-funktiot tuotannossa: Funktiot kuten exec(), system() ja shell_exec() tulisi rajoittaa tuotannon php.ini-tiedostoissa.

  2. Käytä ympäristömuuttujia: Tallenna arkaluonteiset asetukset .env-tiedostoihin (älä koskaan sitoudu näitä versionhallintaan). Laravel ja Symfony tukevat tätä natiivisti.

  3. Aseta oikeat tiedostooikeudet: Verkkopalvelimen tiedostojen tulee olla luettavissa verkkopalvelimen käyttäjälle, mutta ei kirjoitettavissa:

sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;

Miksi nämä käyttöoikeudet ovat tärkeitä: Hakemistot tarvitsevat 755 (luku, kirjoitus ja suoritus omistajalle; luku ja suoritus muille), jotta verkkopalvelin voi käsitellä niitä. Tiedostot tarvitsevat 644 (luku ja kirjoitus omistajalle; vain luku muille), jotta verkkopalvelin voi lukea niitä, mutta ei muokata. Tämä estää haitallisia skriptejä ylikirjoittamasta tiedostojasi.

Versiohallinnan integrointi

Käytä aina versionhallintaa PHP-projekteissasi. Alusta Git projektihakemistossasi:

cd /var/www/your-project
git init

Luo .gitignore-tiedosto sulkeaksesi tarpeettomat tiedostot pois:

/vendor/
/node_modules/
.env
.DS_Store
*.log

Suorituskyvyn optimointi

Parempaa suorituskykyä paikallisessa kehityksessä varten:

  • Ota OPcache käyttöön: OPcache sisältyy PHP 8.1:een ja parantaa suorituskykyä välimuistittamalla käännettyä PHP-koodia.

  • Käytä Composerin autoloaderin optimointia:

composer install --optimize-autoloader --no-dev
  • Määritä PHP-FPM-poolit paremman resurssienhallinnan saavuttamiseksi, jos käytät Nginxiä.

Vaihe 10 — Yleisimpien ongelmien vianmääritys

Yleisiä PHP-asennusongelmia ovat puuttuvat laajennukset, väärät tiedostojen käyttöoikeudet, verkkopalvelimen kokoonpano-ongelmat ja version ristiriidat. Useimmat ongelmat voidaan ratkaista tarkistamalla laajennusten asennus, varmistamalla tiedostojen käyttöoikeudet ja tutkimalla verkkopalvelimen lokit.

PHP-laajennuksia ei ladata

Jos php -m ei näytä juuri asentamaasi lisäosaa:

  • Varmista, että se on todella asennettu:
dpkg -l | grep php8.1-extension_name
  • Tarkista, onko laajennustiedosto olemassa:
ls /usr/lib/php/*/extension_name.so
  • Varmista, että se on otettu käyttöön php.ini-tiedostossa. Joidenkin laajennusten käyttöönotto täytyy tehdä nimenomaisesti:
grep -i extension_name /etc/php/8.1/*/php.ini
  • Käynnistä verkkopalvelimesi uudelleen:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  • Tarkista, mitä php.ini-tiedostoa käytetään:
php --ini

Varmista, että tarkistat oikean php.ini-tiedoston (CLI vs web-palvelin).

Jos laajennus ei vieläkään ilmesty:

  • Jotkin laajennukset vaativat lisäjärjestelmäkirjastoja. Tarkista laajennuksen dokumentaatio
  • Varmista, että olet asentanut oikean version (php8.1-laajennus, ei php8.0-laajennus)
  • Tarkista ristiriitaiset PHP-versiot, jotka saattavat häiritä

500 Sisäinen palvelinvirhe

500-virhe tarkoittaa, että palvelimella tapahtui virhe, mutta yksityiskohtia ei voida näyttää. Tarkista virhelokit:

# Apache
sudo tail -20 /var/log/apache2/error.log

# Nginx
sudo tail -20 /var/log/nginx/error.log

# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.log

Yleiset syyt ja ratkaisut:

  1. Väärät tiedostojen käyttöoikeudet: PHP-tiedostojen on oltava web-palvelimen käyttäjän luettavissa
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
  1. Puutteelliset PHP-laajennukset: Tarkista virheloki viesteistä, kuten „Kutsu määrittelemättömään funktioon”. Asenna puuttuva laajennus ja käynnistä verkkopalvelin uudelleen.

  2. PHP-tiedostojen syntaksivirheet: Virheloki näyttää tiedoston ja rivinumeron. Yleisiä ongelmia:

    • Puuttuvat puolipisteet
    • Sulkemattomat sulkeet tai lainausmerkit
    • Määrittelemättömien funktioiden tai luokkien käyttäminen
  3. Väärä verkkopalvelimen määritys:

    • Apache: Tarkista virtuaalisen isännän asetukset, moduulin lataus
    • Nginx: Varmista PHP-FPM-soketin polku, FastCGI-konfiguraatio
  4. PHP-muistin raja ylitetty: Kasvata memory_limit-arvoa php.ini-tiedostossa, jos näet “Sallittu muistin määrä on loppunut” -virheilmoituksia

PHP-version ristiriidat

Jos php -v näyttää eri version kuin odotettu, sinulla on useita PHP-versioita asennettuna.

Tarkista, mitkä versiot on asennettu:

dpkg -l | grep php | grep -E 'php[0-9]'

Käytä oikeaa versiota nimenomaan:

php8.1 -v
php8.1 -m

Päivitä verkkopalvelimesi käyttämään PHP 8.1:

Apachessa poista käytöstä muut PHP-moduulit ja ota käyttöön PHP 8.1:

sudo a2dismod php7.4 php8.0  # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2

PHP-FPM:ssä pysäytä muut versiot ja käynnistä PHP 8.1:

sudo systemctl stop php7.4-fpm php8.0-fpm  # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Aseta PHP 8.1 oletusarvoiseksi CLI-versioksi:

sudo update-alternatives --set php /usr/bin/php8.1

Composerin muistiongelmat

Jos Composer loppuu muisti, näet virheen, kuten:

Fatal error: Allowed memory size of 134217728 bytes exhausted

Korjaa se ajamalla Composer suuremmalla muistilla:

php -d memory_limit=512M /usr/local/bin/composer install

Tai kasvata PHP:n muistirajaa php.ini-tiedostossa:

memory_limit = 512M

Jos Composerin asennus epäonnistuu hashin ristiriidan vuoksi:

Tiivisteen varmennus saattaa epäonnistua, jos:

  • Asenna ohjelma on päivitetty sen jälkeen, kun latasit sen (lataa uudelleen saadaksesi uusimman tiivisteen)
  • Latauksesi vioittui (yritä ladata uudelleen)
  • Olet välityspalvelimen takana, joka muokkaa tiedostoja (tarkista verkkoyhteysasetuksesi)

Tietokantayhteysongelmat

Jos PHP-sovelluksesi ei voi muodostaa yhteyttä MySQL/MariaDB:hen, saatat nähdä virheitä, kuten:

SQLSTATE[HY000] [2002] No such file or directory

tai

Access denied for user 'username'@'localhost'

Vianmääritysvaiheet:

  1. Varmista, että tietokantapalvelu on käynnissä:
sudo systemctl status mysql

Jos se ei ole käynnissä, käynnistä se:

sudo systemctl start mysql
sudo systemctl enable mysql
  1. Tarkista, että PHP:n MySQL-laajennus on asennettu:
php -m | grep mysql

Jos sitä ei ole, asenna se:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx
  1. Vahvista tietokannan kirjautumistiedot ja käyttöoikeudet. Testaa yhteys:
mysql -u username -p database_name

Jos tämä epäonnistuu, tarkista:

  • Käyttäjätunnus ja salasana ovat oikein
  • Tietokanta on olemassa: SHOW DATABASES;
  • Käyttäjällä on käyttöoikeudet: SHOW GRANTS FOR 'username'@'localhost';

Huomautus: MySQL:n asentamisesta katso Ohjeet MySQL:n asentamiseen Ubuntuun.

PHP-tiedosto näkyy tavallisena tekstinä suorittamisen sijaan

Jos PHP-tiedostosi näkyy selaimessa pelkkänä tekstinä:

  1. Tarkista tiedostopääte: Sen täytyy olla .php, ei .txt tai .html

  2. Varmista, että PHP käsittelee tiedostoja:

    • Apache: Tarkista, että mod_php on käytössä: apache2ctl -M | grep php
    • Nginx: Tarkista, että PHP-FPM on käynnissä ja että soketin polku on oikea
  3. Tarkista tiedoston käyttöoikeudet: Verkkopalvelimen on pystyttävä lukemaan tiedosto

  4. Varmista, että tiedosto sisältää PHP-koodia: Varmista, että se alkaa <?php tai <?

  5. Tarkista verkkopalvelimen asetukset:

    • Apache: Virtuaalipalvelin ei välttämättä ole oikein määritetty
    • Nginx: Sijainti ~ \.php$ -lohko saattaa puuttua tai olla väärä

Tiedoston lähetysongelmat

Jos tiedostojen lataaminen epäonnistuu, saatat nähdä virheitä, kuten:

The uploaded file exceeds the upload_max_filesize directive

Tarkista nämä php.ini-asetukset:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

Tärkeää: post_max_size on oltava suurempi kuin upload_max_filesize. Jos asetat upload_max_filesize=100M, aseta post_max_size=110M tai suurempi.

Jos tiedostojen lähettäminen epäonnistuu edelleen:

  1. Tarkista virheloki saadaksesi tarkat virheilmoitukset
  2. Varmista, että latauskansio on olemassa ja kirjoitettavissa:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory
  1. Tarkista levyn tila: df -h
  2. Varmista, että lomake käyttää enctype="multipart/form-data"

Käynnistä verkkopalvelimesi uudelleen tehdessäsi muutoksia php.ini-tiedostoon.

UKK

Kuinka asennan PHP 8.1:n Ubuntulle?

Asenna PHP 8.1 Ubuntun pakettienhallinnan avulla: sudo apt update && sudo apt install php8.1. PHP 8.1 on saatavilla Ubuntun oletusarkistoissa, joten lisäpakettivarastoja ei tarvita.

Mitkä PHP-laajennukset ovat välttämättömiä kehityksessä?

Peruslaajennuksiin kuuluvat php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd ja php8.1-bcmath. Nämä kattavat tietokantayhteydet, HTTP-pyynnöt, merkkijonojen käsittelyn ja kuvankäsittelyn.

Kuinka määritän PHP:n Apachen tai Nginxin kanssa?

Apachen kanssa asenna libapache2-mod-php8.1 ja ota se käyttöön komennolla sudo a2enmod php8.1. Nginxin kanssa asenna php8.1-fpm ja konfiguroi Nginx lähettämään PHP-pyynnöt PHP-FPM-sokettiin FastCGI:n avulla.

Kuinka voin varmistaa, että PHP on asennettu oikein?

Suorita php -v tarkistaaksesi PHP-version. Luo testitiedosto sisältäen <?php phpinfo(); ?> ja avaa se verkkopalvelimesi kautta saadaksesi yksityiskohtaiset PHP-asetustiedot.

Voinko ajaa Laravelia tai WordPressiä paikallisesti tällä asetuksella?

Kyllä. Laravel vaatii Composerin ja yllä mainitut standardit PHP-laajennukset. WordPress tarvitsee MySQL-tietokannan PHP:n lisäksi. Molemmat kehykset toimivat joko Apache- tai Nginx-konfiguraatioiden kanssa.

Kuinka asennan Composerin PHP-projekteja varten?

Lataa Composer-asennustiedosto, tarkista sen hash-arvo ja asenna se järjestelmänlaajuisesti: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer. Vahvista komennolla composer --version.

Miten voin korjata puuttuvat PHP-laajennukset?

Tarkista asennetut laajennukset komennolla php -m. Asenna puuttuvat laajennukset komennolla sudo apt install php8.1-extensions_nimi ja käynnistä sitten verkkopalvelimesi uudelleen.

Miten määritän PHP-virheraportoinnin kehitystä varten?

Muokkaa php.ini-tiedostoa ja aseta display_errors=On, error_reporting=E_ALL ja log_errors=On. Muista poistaa virheiden näyttö käytöstä tuotantoympäristöissä.

Mikä on ero Apachen ja Nginxin välillä PHP:n kanssa?

Apache käyttää mod_php-moduulia PHP:n käsittelyyn suoraan (PHP on upotettu Apachen prosessiin), kun taas Nginx vaatii PHP-FPM:n (FastCGI Process Manager) PHP-pyyntöjen käsittelyyn (PHP toimii erillisenä palveluna). Katso yllä oleva “Valitseminen Apachen ja Nginx:n välillä” -osio saadaksesi yksityiskohtaisen vertailutaulukon. Molemmat lähestymistavat toimivat hyvin; valitse suorituskykyvaatimusten, tuntemuksen ja olemassa olevan infrastruktuurin perusteella.

Voinko asentaa useita PHP-versioita samaan järjestelmään?

Kyllä, työkaluja kuten phpenv tai phpbrew käyttäen. Kuitenkin useimmissa kehitystilanteissa yksi PHP-versio riittää. Käytä versioiden hallintatyökaluja, kun sinun täytyy testata sovelluksia eri PHP-versioilla.

Johtopäätös

Sinulla on nyt täysin konfiguroitu PHP 8.1 -kehitysympäristö Ubuntulla, jossa on tuki sekä Apache- että Nginx-verkkopalvelimille. Asennukseesi sisältyvät olennaiset PHP-laajennukset, Composer riippuvuuksien hallintaan sekä asianmukainen konfiguraatio paikallista kehitystä varten.

Ennen seuraavan projektisi aloittamista harkitse integroidun kehitysympäristön (IDE) kuten VS Code asentamista PHP-laajennuksilla syntaksin korostusta, virheenkorjausta ja IntelliSense-tukea varten.

Kun ympäristösi on valmis, voit tutkia PHP-kehitystä tarkemmin:

  • Opi PHP:n perusteet otsikolla Kuinka työskennellä merkkijonojen kanssa PHP:ssä
  • Rakenna rajapintoja käyttämällä 'Kuinka käyttää verkkorajapintoja PHP:ssä'
  • Ymmärrä funktioita kohdassa Kuinka käyttää funktioita PHP:ssä
  • Ota tietokannat käyttöön ohjeiden mukaan: PostgreSQL:n asentaminen ja käyttäminen Ubuntussa

Tuotantokäyttöön harkitse Linux-Console.net-sovellusalustan käyttöä PHP-sovellustesi käyttöönottoon suoraan GitHubista automaattisen skaalaamisen ja SSL-sertifikaattien kanssa.

Kiitos, että opiskelet Linux-Console.net -yhteisön kanssa.