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ää.

Ero sivun ”PHP asennus” versioiden välillä

Wikikko - kansan taitopankkista
Siirry navigaatioon Siirry hakuun
 
(5 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 2: Rivi 2:
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.
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 X ==
== Käyttöönotto macOS ==
: El Capitan / Yosemite / Mavericks / Sierra / Catalina / Sequoia
: 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.  
Seuraavassa otetaan käyttöön Apache ja PHP. Jos et ole tietokoneen pääkäyttäjä, saattaa ilmeitä ongelmia.  
Rivi 15: Rivi 15:


=== Apache ===
=== Apache ===
Apache on esiasennettu macOS-käyttöjärjestelmään, esimerkiksi Sequoia. Esiasennus ei ole välttämättä ajantasainen. Usein asennetaan asennusohjelma [[Mac_vinkit#Homebrew|Homebrew]], jolla voidaan asentaa ja päivittää viimeisin Apache-versio. Tällöin Apache asettuu Homebrew:n kansioon eikä ole sama kuin macOS-käyttöjärjestelmään asennettu. 
Ks. asennus sivulta [[Apache]]
* Vaihtoehtoisesti voi Apachen sijaan käyttää Nginx, joka on asennettava. Kannattaa verrata niiden ominaisuuksia. Ks. esim. [https://kevdees.com/install-nginx-amp-multiple-php-versions-on-macos-15-sequoia/#nginx Install Nginx & Multiple PHP Versions on macOS 15 Sequoia].
* Pikavinkit:
** Virheloki: cat /var/log/apache2/error_log
 
Salasana on oman käyttäjätunnuksen salasana. Kertaalleen käynnistettyä ei tarvitse uudestaan käynnistää vaikka tietokone sammutetaan. '''Käynnistyminen saattaa kestää jonkin aikaa''', jolloin tulee virheilmoituksia kuten 'Safari can't open the page "localhost" because Safari can't connect to the server "localhost".'
 
Apachen käynnistys:    sudo apachectl start
Uuudelleenkäynnistys kun apache on valmis:  sudo apachectl restart
Uudelleenkäynnistys välittömästi:    sudo apachectl -k restart
Pois päältä:  sudo apachectl stop
Testaus:    localhost    (anna selaimen hakuriviille, niin tulostuu: It works!)
Php.ini tiedoston tarkistus:    sudo apachectl -t
Versionumero:  httpd -v
Säätö: httpd.conf -tiedosto
Virheiden etsintä: sudo apachectl configtest
 
* Html, php ym. -sivujen kotihakemisto on joko käyttäjäkohtainen tai järjestelmäkohtainen. Ilman mitään toimenpiteitä tulostuva '''It works!''' -sivu on järjestelmäkohtainen ja se löytyy hakemistosta Macintosh HD/Library/WebServer/Documents/index.html.en mutta lähtökohtaisesti hakemistoon ei ole kirjoitusoikeuksia. Seuraavaksi kannattaa asentaa käyttäjäkohtainen Sites-hakemisto. 
 
==== Käyttäjäkohtaisen Sites-hakemiston asentaminen ====
Tämä ohje suorittaa komennolla localhost eli http://localhost tiedostoja, jotka ovat /käyttäjänimi/Sites -hakemistossa eli hakemistossa ~/Sites
 
'''macOS Sequoia (11/2024)'''
* Merkittävin muutos aiempaan Catalinan asennusohjeeseen on php-ohjelmointikielen esiasennuksen poistuminen macOS 12 -versiosta alkaen.
: https://discussions.apple.com/docs/DOC-250008906
* '''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.
# Luo Sites -niminen hakemisto Finderissa oman käyttäjätunnuksen kotihakemiston juureen Macintosh HD/Käyttäjät/käyttäjänimesi/Sites tai pääteohjelmalla mkdir ~/Sites
## Lisää hakemistoon index.html -niminen tiedosto testausta varten: <nowiki> echo "<h1>Tulostuu omasta Sites-hakemistosta</h1>" > ~/Sites/index.html </nowiki>
# Katso Finderissa sivupalkista talokuvakkeen kohdalta millä käyttäjänimellä olet kirjautunut tai pääteohjelmassa komennolla whoami ja käytä kyseistä käyttäjänimeä seuraavassa.
# Ota kopiot muutettavista tiedostoista:
## cp /etc/apache2/httpd.conf ~/Sites
## cp /etc/apache2/extra/httpd-userdir.conf ~/Sites
# sudo nano /etc/apache2/httpd.conf
## Poista seuraavista risuaidat:
### LoadModule userdir_module libexec/apache2/mod_userdir.so
### Include /private/etc/apache2/extra/httpd-userdir.conf
## Jos haluat ottaa käyttöön Perl-ohjelmointikielen poista myös risuaita LoadModule perl_module libexec/apache2/mod_perl.so
# sudo nano /etc/apache2/extra/httpd-userdir.conf
## Poista risuaita riviltä:
### Include /private/etc/apache2/users/*.conf
# sudo nano /etc/apache2/users/käyttajanimi.conf
## Lisää seuraavat rivit. Jos otit Perlin käyttöön, poista risuaita rivin edestä. 
<pre>
<Directory "/Users/<your short user name>/Sites/">
  AddLanguage en .en
  AddHandler perl-script .pl
  #PerlHandler ModPerl::Registry 
  Options Indexes MultiViews FollowSymLinks ExecCGI
  AllowOverride None
  Require host localhost
</Directory>
</pre>
# <li value="7">Myönnä Apache-palvelimelle pääsyoikeus omaan Sites-hakemistoon ja sen alihakemistoihin:</li>
## chmod +a "_www allow execute" ~
# Testaa edelliset muutokset, tulos pitäisi olla: Syntax OK
## apachectl configtest
# sudo apachectl graceful
# Anna selaimessa http://localhost/~käyttäjänimi/ ja pitäisi tulostua oman Sites-hakemiston index.html -tiedoston sisältö. Vastaavasti pelkkä localhost tulostaa järjestelmäkohtaisen It works!
## Hakemistoon voi asentaa esim. ohjelman MediaWiki joka käynnistetään localhost/mediawiki Katso myös aiheeseen liittyvä kohta [[MediaWiki#Collection]]
# Tarvittaessa asetetaan käyttäjänimi.conf -tiedoston käyttöoikeus: sudo chmod 644 /etc/apache2/users/käyttäjänimi.conf
# Tarvittaessa asetetaan oikeat kirjoitusoikeudet käyttäjän Sites-hakemistolle.
## sudo chmod -R a+w ~/Sites
## tai alihakemistokohtaisesti: sudo chmod -R a+w ~/Sites/alihakemisto
 
 
'''macOS Catalina (12/2021)'''
: [https://tech-cookbook.com/2020/11/14/setting-up-your-local-web-server-on-macos-big-sur-11-0-1-2020-mamp-macos-apache-mysql-php/ Big Sur]
: Lähde https://medium.com/@firstsquares/macos-catalina-set-up-localhost-e4a0b5d5be33
* nano -editorissa tallennus ja poistuminen ctrl-x ja Y ja uuden tiedoston ollessa kyseessä enter. Pelkkä tallennus ctrl-o ja enter. Uutta tiedostoa luotaessa on lisäksi painettava Y-kirjaimen jälkeen enter. Jos et ole tehnyt muutoksia ctrl-x poistuu suoraan. Ctrl-w etsii ja kun painat ctrl-w ja vain enter se siirtyy seuraavaan aikaisemmin haettuun kohtaan samalla hakusanalla.
# Luo Sites-hakemisto Finderissa Macintosh HD/Käyttäjät/käyttäjänimesi/Sites tai pääteohjelmalla mkdir ~/Sites
## Lisää sinne index.html testausta varten: <nowiki> echo "<h1>Tulostuu omasta Sites-hakemistosta</h1>" > ~/Sites/index.html </nowiki>
# Katso Finderissa sivupalkista talokuvakkeen kohdalta millä käyttäjänimellä olet kirjautunut ja käytä sitä seuraavassa. Tai pääteohjelmassa komennolla whoami
# sudo nano /etc/apache2/httpd.conf
## Poista #-merkit seuraavien edestä ja tallenna tiedosto:
LoadModule php7_module libexec/apache2/libphp7.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
## <li value="2"> Lisää #-merkki kohtaan <Directory "/Library/WebServer/Documents"> ja alempana #Require all granted ja lisää sen alle rivi Require all Denied</li>
## Jos asennus ei toimi, kokeile poista myös seuravista:
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
# <li value="4">sudo nano /etc/apache2/extra/httpd-userdir.conf</li>
## Poista #-merkki riviltä Include /private/etc/apache2/users/*.conf
# sudo nano /etc/apache2/users/käyttäjänimi.conf
## Lisää rivit ja tallenna.
<Directory "/Users/käyttäjänimi/Sites/">
AddLanguage en .en
AllowOverride All
Options Indexes MultiViews  FollowSymLinks
AllowOverride All
Require local
</Directory>
# <li value="6">Aseta tiedoston käyttöoikeus: sudo chmod 644 /etc/apache2/users/käyttäjänimi.conf</li>
# Jos Apache on jo aikaisemmin käynnistetty, käynnistä uudelleen: sudo apachectl restart
# Anna selaimessa: http://localhost/~käyttäjänimi/
## Hakemistoon voi asentaa nyt esim. ohjelman mediawiki joka käynnistetään localhost/mediawiki Katso myös aiheeseen liittyvä kohta [[MediaWiki#Collection]]
# Asetetaan oikeat kirjoitusoikeudet hakemistoon
## sudo chmod -R a+w ~/Sites
## Tai alihakemistokohtaisesti: sudo chmod -R a+w ~/Sites/alihakemisto
 
'''Sierra (4/2017)'''
* Tämä ohje suorittaa komennolla http://localhost tiedostoja, jotka ovat /käyttäjänimesi/Sites -hakemistossa eli hakemistossa ~/Sites
: Aivan alkup lähde (ei enää Sierra) https://getgrav.org/blog/mac-os-x-apache-setup-multiple-php-versions
 
# Selvitä php-versio: php -v
# Luo Sites-hakemisto Finderissa Macintosh HD/Käyttäjät/käyttäjänimesi/Sites tai pääteohjelmalla mkdir ~/Sites
## Lisää sinne index.html testausta varten: <nowiki> echo "<h1>Tulostuu omasta Sites-hakemistosta</h1>" > ~/Sites/index.html </nowiki>
# Katso Finderissa sivupalkista talokuvakkeen kohdalta millä käyttäjänimellä olet kirjautunut ja käytä seuraavassa sitä.
# sudo nano /etc/apache2/httpd.conf
## nano -editorissa ctrl-w etsii ja kun painat ctrl-w ja vain enter se siirtyy seuraavaan aikaisemmin haettuun kohtaan samalla hakusanalla. Tallennus ja poistuminen ctrl-x ja Y. Jos et ole tehnyt muutoksia ctrl-x poistuu suoraan.
## Hae ctrl-w hakusanalla: DocumentRoot
### DocumentRoot "/Library/WebServer/Documents" muunna DocumentRoot "/Users/käyttäjänimi/Sites"
### Muunna <Directory "/Users/käyttäjänimi/Sites">
### Samassa <Directory> -lohkossa muunna AllowOverride All
## Muunna käyttäjä ja ryhmä, jotka ovat selvästi alempana tiedosto kuin edellä olevat: User käyttäjänimi ja Group staff
## Hae ctrl-w hakusanalla: ServerName
### Poista ServerName local_server:80 edestä risuaita. Muutoin saat virheilmoituksia AH00557: httpd: apr_sockaddr_info_get() failed for x.local ja AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
# Jos PHP 7.0 lisää vielä kohdat jotka tämän ohjeen alla otsikolla "Jos PHP 7.0 lisää vielä"
# ctrl-x ja Y ja enter
# sudo apachectl -k restart
# http://localhost ja pitäisi tulostua mitä index.html:ssä, mutta välttämättä hakemistossa olevat ohjelmat eivät toimi, vaan saat antaessasi localhost/ohjelmannimi virheilmoituksen "Forbidden 403, You don’t have permission to access /filename/ on this server". Tee seuraavat muutokset:
 
* Tarkista mikä Apache-versio on käytössä: httpd -v
* ls /etc/apache2/users/  Tarkista löytyykö tiedosto: käyttäjänimi.conf
** Jos ei löydy: sudo nano /etc/apache2/users/käyttäjänimesi.conf  ja anna salasana tai jos löytyy niin avaa tiedosto samalla tavoin
** El Capitan, Yosemite, Mavericks: Liitä seuraava koodi tiedostoon JOS Apache 2.4 ja paina ctrl-x
<Directory "/Users/käyttäjänimesi/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
** Liitä seuraava koodi tiedostoon JOS Apache 2.2 ja paina ctrl-x
<Directory "/Users/käyttäjänimesi/Sites/">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
* Tarkista käyttöoikeus komennolla:  ls -l /etc/apache2/users/käyttäjänimesi.conf joka pitäisi olla: -rw-r--r--  1 root  wheel  133  Aug 13  2015 käyttäjänimi.conf
** Jos ei ole: sudo chmod 644 /etc/apache2/users/käyttäjänimi.conf
* Tarkista että seuraavien rivien edessä ei ole # -merkkiä. Hae ctrl-w -komennolla rivejä kirjoittamalla niiden alkuosa. Useamman edessä on ainakin El Capitanissa #-merkki. Poistu ctrl-x ja paina y ja enter.
sudo nano /etc/apache2/httpd.conf
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule php5_module libexec/apache2/libphp5.so
Include /private/etc/apache2/extra/httpd-userdir.conf
sudo nano /etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/users/*.conf
* Jos Apache on jo aikaisemmin käynnistetty, käynnistä uudelleen: sudo apachectl restart
* Kyseiseen hakemistoon voit asentaa nyt esim. ohjelman mediawiki joka käynnistetään localhost/mediawiki
* Katso myös aiheeseen liittyvä kohta [[MediaWiki#Collection]]
 
* Jos PHP 7.0 lisää vielä:
** <FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])"> Require all denied </FilesMatch> -kohdan alle rivit:
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
** ja etsi <IfModule dir_module> DirectoryIndex index.html </IfModule> ja lisää index.php riville, joka näyttää sitten seuraavalta: DirectoryIndex index.php index.html
 
* Jos saat virheilmoituksen "Forbidden 403, You don’t have permission to access /filename/ on this server" kun yrität avata oman käyttäjähakemiston tiedostoja, katso että käyttäjänimesi.conf tiedostossa on oikea apache-version mukainen koodi ja #-merkkejä ei ole rivien edellä kuten edellä on mainittu. ([http://coolestguidesontheplanet.com/forbidden-403-you-dont-have-permission-to-access-username-on-this-server/ alkuperäinen ohje]
** Tee muutokset vaihtoehdon 2 kohdasta "Tarkista mikä Apache..." alkaen.
 
* Sivu ei avaudu:
** Jos http://localhost -komennolla selaimessa ei avaudu, tarkista että /etc/hosts -tiedosto sisältää 127.0.0.1 localhost -rivin
** Tarkista että #-merkki on rivin LoadModule php5_module libexec/apache2/libphp5.so edellä tiedostossa /etc/apache2/httpd.conf
* Ei toimi:
** Ehkä vaatii muutoksia httpd.conf -tiedostoon, joita on kerrottu vaihtoehto 2:ssa
 
==== .htaccess ylikirjoitus ja URL-uudelleenkirjoituksen salliminen ====
Jos käytät kuitenkin Macintosh HD/Kirjasto/WebServer/Documents/ -hakemistossa olevaa, kts. ohje http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
 
==== Apache, User, Group ====
* Todennäköistä on että käyttäessäsi esimerkiksi MediaWiki-ohjelman tiedostotallennusta, Apache tallentaa tiedostot User _www ja Group staff tai Group _www. Voit muuttaa tätä asetusta esimerkiksi että tallennus tapahtuu omalla käyttäjätunnuksellasi kuten: User omamackäyttäjätunnus ja Group staff. Jos haluat taas root -tunnuksen niin User root ja Group wheel Muutos vaikuttaa ilmeisesti vain tästä hetkestä eteenpäin eli olemassaoleviin hakemisto ja tiedosto-oikeuksiin se ei vaikuta.
cd /private/etc/apache2/
sudo vi httpd.conf
anna salasana
a Tämä a-kirjain avaa syöttötoiminnon vi-editorissa.
Etsi kohta, jossa on User ja Group.
  User omakäyttäjänimi
  Group staff
esc :wq Paina esc kaksoispiste w ja q perätysten niin tiedot tallennetaan ja poistutaan editorista.
sudo apachectl graceful Käynnistetään Apache uudestaan graceful toiminnolla.
 
* Jos olet päivittänyt Mavericksiin Lionista tai Yosemiteen Maverickista muodostuu uusi httpd.conf -tiedosto. Vanha on ehkä samassa kansiossa nimellä httpd.conf.pre-update


=== Hakemisto- ja tiedosto-oikeudet ===
=== Hakemisto- ja tiedosto-oikeudet ===
Rivi 212: Rivi 24:


=== PHP asennus ===
=== PHP asennus ===
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!
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.  
* 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.  
Rivi 323: Rivi 140:
** sudo nano /opt/homebrew/etc/php/8.1/php.ini
** sudo nano /opt/homebrew/etc/php/8.1/php.ini
** Yleisiä asetuksia joita säädetään:
** 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. 20M Varo ettet syötä kaksi kertaa kirjaimia MM
: 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.timezone = "Europe/Helsinki"
: date.default_latitude = 60.174306261926034
: date.default_latitude = 60.174306261926034
Rivi 332: Rivi 149:
: register_globals
: register_globals
: magic_quotes_gpc
: magic_quotes_gpc
** Käynnistä Apache uudestaan ( sudo apachectl -k restart ) ja tarkista phpinfo:sta että on muuttunut.
** sudo apachectl -k restart Käynnistetään Apache uudestaan ja tarkistetaan phpinfo:sta että on muuttunut.


====PHP moduulit, extensions====
====PHP moduulit, extensions====
Rivi 427: Rivi 244:
# 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
# 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 Windows:ssa===
== Asennuksen poistaminen ==
 
* '''Ubuntu'''
===Käyttöönotto Linuxissa===
sudo apt remove php*
sudo apt purge apache2 php*
php -v


===Käyttöönotto palvelimella===
===Käyttöönotto palvelimella===

Nykyinen versio 20. tammikuuta 2026 kello 16.08

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

Asennuksen poistaminen

[muokkaa]
  • Ubuntu
sudo apt remove php*
sudo apt purge apache2 php*
php -v

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