Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

Ennen tallennusta suositellaan ottamaan kopio muokkausruudusta (ctrl-a -> ctrl-c)

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

PHP asennus

Wikikko - kansan taitopankkista
Siirry navigaatioon Siirry hakuun

Yleistä[muokkaa]

Sivu sisältää PHP-ohjelmointikielen käyttöönotto-ohjeita. Tällä sivulla otetaan ensin käyttöön Apache ja asennetaan sen jälkeen käyttäjäkohtainen Sites-hakemisto ja lopuksi PHP-ohjelmointikieli. Tämän jälkeen Sites-hakemistossa olevia html-, php- ym. verkkosivuja voidaan käyttää suoraan selaimesta. Jatkotoimenpide on esimerkiksi MySQL:n asennus, jolloin voidaan käyttää paikallisesti tietokantapohjaisia php-ohjelmistoja selaimen kautta.

Käyttöönotto macOS[muokkaa]

El Capitan / Yosemite / Mavericks / Sierra / Catalina / Sequoia

Seuraavassa otetaan käyttöön Apache ja PHP. Jos et ole tietokoneen pääkäyttäjä, saattaa ilmeitä ongelmia.

  • Vaihtoehtoisesti voidaan käyttää myös MAMP. Silloin ollaan kuitenkin riippuvaisia sen päivityksistä.
  • Huom! PHP ei ole valmiiksi asennettuna Sequoia:ssa, tarkemmin se poistettiin macOS 12 -versiossa.
  • Lisätietoa kuten myös lähteitä näille asennusohjeille:
https://coolestguidesontheplanet.com/upgrade-php-on-osx/
https://getgrav.org/blog/mac-os-x-apache-setup-multiple-php-versions
Yosemite
Mavericks

Apache[muokkaa]

Ks. asennus sivulta Apache

Hakemisto- ja tiedosto-oikeudet[muokkaa]

  • Julkaistessasi web-sivuja verkossa esimerkiksi kotikoneelta, on tietoturvasta pidettävä ehdottomasti huolta! Yksi puoli on ajantasaiset ohjelmat, jotka päivitetään välittömästi kun ilmenee uhkia ja muutoinkin pidetään ajantasalla. Toinen on tiedostojärjestelmän suojaaminen. Myös muita tärkeitä huomioonotettavia asioita on joihin on syytä perehtyä! Niitä ei ole ainakaan vielä tässä lueteltu.
  • Tiedostojärjestelmän oikeudet
    • Sivuston hakemisto suojataan esimerkiksi: sudo chmod -R a+w ~/Sites/sivustosihakemistonimi
    • Tämä asettaa tiukemman rajoituksen ja joudut todentamaan itsesi useammin käsitellessäsi tiedostoja: sudo chown -R _www ~/Sites/testsite

PHP asennus[muokkaa]

Käynnistys pääteohjelmalla: brew services start shivammathur/php/php@8.1
Pysäytys pääteohjelmalla: brew services stop shivammathur/php/php@8.1
Uudelleenkäynnistys pääteohhjelmalla: brew services restart shivammathur/php/php@8.1

Edelliset komennot siinä tapauksessa, että ne on asennettu Homebrew-asennuksena. Käytä kyseessä olevaa versionumeroa.

PHP ei ole enää valmiiksi asennettuna macOS 12 -versiossa ja sen jälkeen!

  • Kun asennettu PHP on kerran kytketty päälle, se on päällä taustalla vaikka tietokone sammutetaan ja käynnistetään uudestaan. PHP pitää erikseen kytkeä pois tarvittaessa.
  • Versionumero näkyy päätekomennolla: php -v
  • Paljon tietoa saa päätekomennolla: echo phpinfo( );
  • brew services start shivammathur/php/php@8.1
  • brew services restart php@8.1
  • brew services stop shivammathur/php/php@8.1

Sequoia (11/2024)

  • Useita php-versioita voi olla asennettuna samanaikaisesti. Seuraavassa asennetaan vain versio 8.1.
  • Php.ini asentuu hakemistoon /opt/homebrew/etc/php/8.1/php.ini
  • nano -editorin ohje: Tallennus ja poistuminen ctrl-x ja Y ja jos tehty muutoksia tai uusi tiedosto, vielä enter. Pelkkä tallennus ctrl-o ja enter. Ctrl-w etsii ja kun painat ctrl-w ja vain enter, siirtyy seuraavaan aikaisemmin haettuun kohtaan samalla hakusanalla.
  1. Asennetaan Homebrew-asennusohjelma.
  2. brew update
  3. brew upgrade
  4. brew tap shivammathur/php
  5. brew install shivammathur/php/php@8.1
  6. sudo nano /etc/apache2/httpd.conf ja lisää rivit, jotka on ilmoitettu asennuksen lopussa "To enable PHP in Apache add the following to httpd.conf and restart Apache:"
LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Lisää index.php riville DirectoryIndex index.html 
 DirectoryIndex index.php index.html
  1. sudo apachectl -k restart
  2. brew services start shivammathur/php/php@8.1 käynnistää PHP:n ja luo samalla toiminnon, joka käynnistää sen aina tietokone käynnistettäessä. Tästä tulee ilmoitus Background Items Added "php-fpm" is an item that can run in the background. You can manage this in Login Items & Extensions.
    1. /opt/homebrew/opt/php@8.1/sbin/php-fpm --nodaemonize käynnistää PHP:n mutta EI luo samalla automaattista käynnistystoimintoa tietokonetta käynnistettäessä.
  3. brew link --force --overwrite php@8.1
  4. php -v
    1. Pitäisi näkyä PHP 8.1.31 jne. Jos ei näy, voi esim. kokeilla seuraavia. Tämän ohjeen asennuksessa jouduttiin kokeilemaan seuraavia, mutta ei ole täysin varmaa, mikä lopulta sai PHP:n toimimaan. Apachen uudelleenkäynnistymisen jälkeen voi hetken odottaa ja kotisivukin kannattanee päivittä cmd-r -näppäinyhdistelmällä.
brew reinstall libunistring  
brew install brotli
brew unlink php
brew reinstall php@8.1
sudo apachectl graceful
  1. Localhost ei enää toimi, varsinkaan, jos käytössä on esiasennettu Apache eikä Homebrew:lla asennettu. Palvelinyhteys saadaan taas toimimaan kun moduuli /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so on allekirjoitettu/sertifioitu. Kun yritetään käynnistää Apachea uudestaan komennolla sudo apachectl -k restart tulee virheilmoitus: AH06665: No code signing authority for module at /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so specified in LoadModule directive. Ohjeen lähde: https://www.simplified.guide/macos/apache-php-homebrew-codesign
    1. Avaa Keychain Access.app (etsi esim. Spotlight, tämä ei ole sama kuin Passwords-sovellus).
    2. Luo ensin Certificate Authority. Käytä nimenä esimerkiksi omaa nimeäsi muodossa Sukunimi Etunimi ja valitse sertifikaatin hyväksyjäksi kirjautumistunnuksesi. Sertifikaatin asennuksessa on monta yksityiskohtaa, joten seuraa edellä mainitun linkin kautta avautuvia kuvallisia asennusohjeita.
    3. Luo seuraavaksi Code Signing Certificate. Tämä on yksinkertaisempi, mutta samoin seuraa em. linkin ohjeita.
    4. Asenna Xcode App Storesta
    5. xcode-select --install (asennetaan "työkalut" Xcodeen)
    6. sudo apachectl -k restart
    7. Poimi virheilmoituksesta tiedostopolku ja yhdistä se -db -sanan jälkeen välilyönnillä erotettuna.
      1. codesign --sign "Sukunimi Etunimi" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so
    8. sudo nano /etc/apache2/httpd.conf
      1. Lisää aiemmin lisäämäsi rivin loppuun välilyönnillä erotettuna sitaatteihin sertifikaatissa antamasi nimesi Sukunimi Etunimi: LoadModule php_module /opt/homebrew/opt/php@8.1/lib/httpd/modules/libphp.so "Sukunimi Etunimi"
  2. sudo apachectl -k restart
  3. Testaa selaimessa localhost ja http://localhost/~käyttäjätunnus/
 echo 'export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH"' >> ~/.zshrc
 echo 'export PATH="/opt/homebrew/opt/php@8.1/sbin:$PATH"' >> ~/.zshrc
  • For compilers to find php@8.1 you may need to set:
 export LDFLAGS="-L/opt/homebrew/opt/php@8.1/lib"
 export CPPFLAGS="-I/opt/homebrew/opt/php@8.1/include"

Ennen macOS 12 (/macOS11)

  1. Avaa Pääte-ohjelma
  2. Anna komento: sudo nano /etc/apache2/httpd.conf
  3. ctrl-w ja kirjoita: php
  4. poista #-merkki riviltä LoadModule php5_module libexec/apache2/libphp5.so
  5. ctrl-x ja paina: y ja enter
  6. testaa toiminta esim.
    1. avaa uusi tiedosto TeXturi:ssa
    2. kirjoita: <?php phpinfo(); ?>
    3. tallenna Sites -hakemistoon nimellä phpinfo.php
    4. anna selaimessa: http://localhost/phpinfo.php TAI http://localhost/~käyttäjänimesi/phpinfo.php ja tulostuu tietoa php:stä
    5. jos tulostuu <?php phpinfo(); ?> ilmeisesti Apache ei ole toiminnassa. Tuleeko Apachen uudelleenkäynnistyksessä virheilmoituksia. Sen uudellenkäynnistyessä ei pitäisi ilmestyä mitään komennon jälkeen.
  7. Asetusten säätö php.ini -tiedosto

macOS Lion

  • PHP 5.3.6 on Lion -käyttöjärjestelmässä valmiina, se pitää vain ottaa käyttöön päätteellä tai tuomalla Finderissa piilotiedostot näkyviin ja muokkaamalla esim. Smultron-ohjelmalla.
  • Avaa tiedosto /private/etc/apache2/httpd.conf
  • Ota käyttöön rivi LoadModule php5_module libexec/apache2/libphp5.so
  • Lion asennuksen testaus
    • Tee esimerkiksi TeXturilla tiedosto johon laitat vain <?php phpinfo() ?>
    • Tallena tiedosto nimellä test.php hakemistoon käyttäjänimesi/Sivustot/
    • Avaa Järjestelmäasetukset, sieltä Jako ja rastita Web-jako päälle. Tarvittaessa paina lukkoa ja anna pääkäyttäjän salasana. Nyt klikkaa linkkiä siitä Web-jako -kohdan viereltä Henkilökohtainen verkkosivusto. Avautuu verkkosivusto selaimessa, siirry selaimen osoiteriville ja lisää loppuun test.php Esimerkiksi /~käyttäjä/test.php ja paina enter
    • Nyt pitäisi avautua PHP Version 5.3.6 ja paljon tietoa taulukossa.

Päivitys uudempaan versioon[muokkaa]

PHP ei välttämättä toimi uusien skriptien kanssa, koska ne käyttävät uudempaa php-versiota.

  • Tämä ohje koskee ennen macOS 12 / 11 -versioita.
  • Asennetaan 7.0 tai joku muu, minkä numeron vaihdat komentoon, esm. 5.6. Tiedosto asentuu hakemistoon /usr/local/php5/ ja luo symlinkin uuteen versioon, jonka voit nähdä esm komennolla readlink /usr/local/php5
  • Testaa asennus phpinfo.php -tiedostolla koska php -v antaa vanhan komentorivillä. Sisällytä phpinfo.php tiedostoon rivi <?php phpinfo();?>
  • Komento ilmeisesti lisää # -merkin rivin eteen LoadModule php5_module libexec/apache2/libphp5.so tiedostoon /etc/apache2/httpd.conf Tämä on muutos edellä kerrottuun, jossa se poistetaan, mutta nyt sen pitää olla siellä, tai muutoin voi ilmetä, että localhost komento ei muodosta yhteyttä eli saat virheilmoituksen ettei palvelimeen saada yhteyttä. Lähde: https://coolestguidesontheplanet.com/upgrade-php-on-osx/
curl -s http://php-osx.liip.ch/install.sh | bash -s 7.0

php.ini-asetukset[muokkaa]

php.ini-tiedosto sisältää asetukset ja se ladataan kun Apache käynnistetään. Joten jos tiedostoon tehdään muokkauksia, on Apache käynnistettävä uudestaan. Tiedosto sijaitsee /etc hakemistossa nimellä php.ini.default tai Homebrew-asennuksessa /opt/homebrew/etc/php/8.1/ php.ini -tiedoston hakemistopolun näkee varmuudella phpinfo() kohdasta Configuration File (php.ini) Path

  • phpinfo() näyttää selaimessa php.ini:n asetukset.
  • Vaihtoehtoisesti php 5.3 versiosta lähtien käyttäjä voi muuttaa omia asetuksia .user.ini -tiedostolla. Tiedosto asetetaan sen kansion juureen jossa sen halutaan vaikuttavan. Ei vaadi mitään uudelleen käynnistystä, vaan käytettävän ohjelman sivun päivityksen selaimessa. Esim. jos et voi vieraalla palvelimella muuttaa varsinaista php.ini -tiedostoa ja oletuskellonaika on väärin. Tällöin voit lisätä haluamasi ohjelman, esim. pydio, juurihakemistoon .user.ini -tiedoston ja asetaa php.ini muutokset siihen. Tässä esimerkissä:
date.timezone = "Europe/Helsinki"
date.default_latitude = 60.174306261926034
date.default_longitude = 24.983339309692383
  • Loaded Configuration File -kohdasta näkee onko php.ini ladattu. php.ini.default tiedostoa ei lueta joten merkintä on (none), mutta php.ini saadaan käyttöön komennolla sudo cp php.ini.default php.ini ja tämän jälkeen Apachen uudelleenkäynnistys ( sudo apachectl restart ). Luodaan siis kopio deaultista ja php.ini.default jää alkuperäiseksi kopioksi. Jos php.ini on jo käytössä asennuksen jälkeen, voidaan siitä luoda kopio
cp /opt/homebrew/etc/php/8.1/php.ini /opt/homebrew/etc/php/8.1/php.ini.asennuskopio
  • Muokataan php.ini -tiedostoa
    • nano -editorin ohje: Tallennus ja poistuminen ctrl-x ja Y ja jos tehty muutoksia tai uusi tiedosto, vielä enter. Pelkkä tallennus ctrl-o ja enter. Ctrl-w etsii ja kun painat ctrl-w ja vain enter, siirtyy seuraavaan aikaisemmin haettuun kohtaan samalla hakusanalla.
    • sudo -editorin ohje: sudo pico php.ini > ctrl-w > haetaan esim. upload_max_filesize > tee muutos > ctrl-x > y > enter
    • sudo nano /opt/homebrew/etc/php/8.1/php.ini
    • Yleisiä asetuksia joita säädetään:
upload_max_filesize ja post_max_size määrittelevät yhden latauksen maksimikoon. Saattaa olla että oletuksena on enintään 2MT latausmäärä, mikä helposti rajoittaa yhdessä post_max_size kanssa ja antaa virheilmoituksen tuotaessa esim. MediaWikiin sivuja. Esim. 10M sallii kolme kpl 3M tiedoston lataamisen. Huomaa että post_max_size pitää olla sama tai suurempi kuin upload_max_size. Aseta arvoksi kumpaankin esim. 100M Varo ettet syötä kaksi kertaa kirjaimia MM
date.timezone = "Europe/Helsinki"
date.default_latitude = 60.174306261926034
date.default_longitude = 24.983339309692383
memory_limit
max_execution_time
max_input_time
register_globals
magic_quotes_gpc
    • sudo apachectl -k restart Käynnistetään Apache uudestaan ja tarkistetaan phpinfo:sta että on muuttunut.

PHP moduulit, extensions[muokkaa]

php -m näyttää asennetut moduulit
php -i näyttää moduuleista tarkempaa tietoa
  • Tai aja /phpinfo.php ja selaimen hakutoiminnolla etsi moduulia tai extension_dir hakemistoa.
    • Asennushakemisto extension_dir voi olla esimerkiksi /usr/lib/php/extensions/no-debug-non-zts-20100525
  • Jos haluttua moduulia ei löydy, sitä todennäköisesti ei ole asennettu.

Zend OPcache asennus[muokkaa]

Zend OPcache nopeuttaa PHP-koodin suoritusta välimuistin ja optimoinnin avulla. Tämä tapahtuu kääntämällä etukäteen koodia ja tallentamalla se jaettuun muistiin. Koodia ei tällöin tarvitse joka ikinen kerta ladata kovalevyltä ja kääntää kun sitä pyydetään. OPcache huomaa myös koodin muuttumisen. Etu voi olla 90 %.

  1. php -v
  2. brew search opcache
    1. vastaus on esimerkiksi: homebrew/php/php55-opache Valitse php versiosi mukainen.
  3. brew install homebrew/php/php55-opcache
    1. Katso mihin asennus tapahtui aivan lopusta esm. /usr/local/Cellar/php55-opcache/5.5.28 jolloin osoite on: /usr/local/Cellar/php55-opcache/5.5.28/opcache.so jota tarvitaan myöhemmin.
    2. Kyseisestä kansiosta löydät myös README -tiedoston jossa on asennusohjeet.
  4. Lisää /etc/php.ini tiedoston loppuun seuraavat. Katso Intl kohdasta kuinka sinne lisätään vi-editorilla rivejä. php.ini sisältää ennestään opache -rivejä!
    1. Jos käytössä on ionCube Loader sen tulee olla aiemmilla riveillä kuin OPcache. Ja jos Xdebug on käytössä, sen tulee olla myöhemmin kuin OPcache tiedostossa.
zend_extension = /usr/local/Cellar/php55-opcache/5.5.28/opcache.so

Poista puolipiste seuraavista ja muuta arvot:
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
  1. sudo apachectl restart
  2. php -v jolloin täytyy näkyä maininta Zend Engine:stä. Näkyy myös phpinfo.php:ssä.

intl ja PEAR asennus[muokkaa]

PEAR is a framework and distribution system for reusable PHP components. Etene otsikoiden järjestyksessä.

1. Homebrew[muokkaa]
  1. Asenna Homewbrew, katso ohje sivu Mac vinkit.
2. PEAR[muokkaa]
https://pear.php.net

PEAR on jakelukanava laadukkaille PHP-skripteille

  • Asennus Mac OSX (Sierra 4/2017)
  1. Testaa onko tietokoneessa jo pear. Pääteohjelmassa anna komento: pear version Jos vastaus on Could not open input file: /usr/lib/php/pearcmd.php sitä ei ole.
  2. Katso myös El Capitan asennus https://coolestguidesontheplanet.com/installing-pear-on-osx-10-11-el-capitan/
  3. curl -O http://pear.php.net/go-pear.phar
  4. sudo php -d detect_unicode=0 go-pear.phar
  5. Asenna ohjeen https://pear.php.net/manual/en/installation.getting.php mukaan.
  6. Asenna PATH jos ei ole automaattisesti asennettu (kts. ohje kohta 2)
  7. Testaa: pear version
  8. PEAR:in php_dir täytyy liittää osaksi PHP:n include-polkua, jotta PHP-skriptissä voidaan kutsua require_once(); eli esim. require_once("Numbers/Roman.php");
    1. Katso tarvittaessa ohje https://pear.php.net/manual/en/installation.checking.php
    2. Selvitä missä PEAR:in php_dir sijaitsee: pear config-get php_dir
      1. esimerkiksi: /usr/local/pear/share/pear
    3. Selvitä missä PHP:n php.ini sijaitsee: php --ini
      1. jos et ole muutellut aiemmin, se on todennäköisesti /etc ja tiedostonimellä php.ini.default
    4. cd /etc ; sudo cp php.ini.default php2.ini
    5. cd /etc ; sudo nano php.ini
      1. ctrl-w ja etsi Paths and Directories
      2. Lisää sen otsikon alle johonkin kohtaan seuraava rivi, joka sisältää edellä php_dir -osoitteen: include_path = ".://usr/local/pear/share/pear/"
      3. ctrlx ja y ja enter
    6. sudo apachectl -k restart
    7. Jos nyt annat komennon: php -c /etc/php.ini -r 'echo get_include_path()."\n";' polku pitäisi olla sama kuin edellä antamasi: .://usr/local/pear/share/pear/
  9. Kirjoita php-tiedosto ja aja se:
<?php
    require_once 'System.php';
    var_dump(class_exists('System', false));
    ?>
  • Jos ei tulostu bool(true), katso tarvittaessa virheistä ohje https://pear.php.net/manual/en/installation.checking.php
    • Katso virheloki: cat /var/log/apache2/error_log
    • esim. PHP Fatal error: require_once(): Failed opening required 'System.php' (include_path='.:/Users/käyttäjänimi/pear/share/pear/') in /Users/käyttäjänimi/Sites/tiedostonimi.php on line 2
  • PEAR:in päivitys: pear upgrade pear
  • PEAR-pakettien päivitys: pear upgrade
  • Asennetut PEAR-paketit: pear list
    • Lisätietoa: pear info asennetunpaketinnimi
  • Paketin asennus: pear install paketinnimi
  • PEAR-asennuksen poistaminen: pear uninstall PHP_CodeSniffer
3. Intl[muokkaa]
  1. brew update
  2. brew search icu
  3. brew install icu4c käytä tässä edellä saamaasi tulosta
    1. Asennus tapahtuu todennäköisesti kohteeseen: /usr/local/Cellar/
  4. sudo pecl update-channels
  5. sudo pecl install intl
    1. Vastaa kysymykseen Specify where ICU libraries and headers can be found [DEFAULT] : osoitteella /usr/local/opt/icu4c/
    2. Jos saat virheilmoituksen ERROR: failed to write /usr/lib/php/extensions/no-debug-non-zts-20100525/intl.so (copy(/usr/lib/php/extensions/no-debug-non-zts-20100525/intl.so): failed to open stream: No such file or directory) asennus ei ole onnistunut.
  6. Lisää /etc/php.ini tiedoston loppuun extension=intl.so
    1. sudo vi /etc/php.ini
      1. paina esc a > esc G > kirjoita extension=intl.so > esc : wq!
    2. sudo apachectl restart
  7. Tarkista että moduuli on rekisteröity: php -m | grep intl jolloin onnistuneen asennuksen vastaus on intl. Lisäksi näet sen phpinfo.php:ssä. Intl.so on hakemistossa /usr/lib/php/extensions/no-debug-non-zts-20100525

Käyttöönotto palvelimella[muokkaa]

PHP-tulkki on usein valmiiksi asennettu kuten myös Apache kaupalliselle palvelimelle. Ne ovat siis suoraan käytettävissä. Palvelin on esimerkiksi Linux tai Windows -pohjainen.

MySQL tietokanta[muokkaa]

Katso PHP ja MySQL