PHP (Hypertext Preprocessor) はオープンソースの汎用スクリプト言語です。サーバーサイドでのWebページ作成のために用いられることが多く、HTML に埋め込むことができます。今回はまず第一歩目としてPHPのインストール方法について、備忘録として残しておきます。
開発環境
OS: Ubuntu16.04LTS
今回の記事のゴール
- PHPの最新版(記事を書いている時点ではPHP7.2)をインストールすること
- 発生したトラブルとその対応を共有すること
インストールする
phpのインストール
依存ファイルも含めて以下のコマンドを入力します。
$ sudo apt -y install php php-cgi libapache2-mod-php php-common php-pear php-mbstring
現在aptリポジトリに登録してある最新バージョンがインストールされます。
もし、phpの公式サイトにもっと新しいバージョンがリリースされていて、それをインストールしたい場合は、以下のようにしてインストールすることができます。
まず、ppaを追加します。
~$ sudo add-apt-repository ppa:ondrej/php
あとは通常のインストールと同じです。
~$ sudo apt update
~$ sudo apt install -y php7.2
~$ sudo apt install php-cgi libapache2-mod-php php-common php-pear php-mbstring
ただ、ppaでインストールされたバージョンは動作が保証されたものでは無いので、これによって生じる動作不具合などに関しては当方は責任を負い兼ねます。
筆者はppaを追加しっぱなしのまま置いておいたら、ある日のapt updateでRCバージョンがインストールされWordpressの表示が崩れて難儀してしまったことがあります。十分注意しましょう。
apacheの設定
apache側の設定も必要です。
まずphpモジュールを有効にします。
/etc/apache2/conf-available$ sudo a2enconf php7.2-cgi
[sudo] ******** のパスワード:
Enabling conf php7.2-cgi.
To activate the new configuration, you need to run:
systemctl reload apache2
設定ファイルを修正します。
~$ vim /etc/php/7.2/apache2/php.ini
936行目付近のdate.timezonを”Asia/Tokyo”に設定します。
936 [Date]
937 ; Defines the default timezone used by the date functions
938 ; http://php.net/date.timezone
939 date.timezone = "Asia/Tokyo"
最後に、apacheを再起動します。
$ sudo systemctl restart apache2
phpが正常に動作するか確認
ファイルtest.phpを作成し、var/www/html/に格納します。
test.phpには以下を記述
$ cat test.php
<?php phpinfo(); ?>
ブラウザにて、http://localhost/test.php または http://127.0.0.1/test.phpにアクセスします。
以下の画面がでればOK!
ハマった点
手順にして書くと簡単ですが実際はいろいろトラブルありましたので、ここに共有します。
phpコードが表示されてしまう
phpをブラウザで実行すると、何故かphpコードがそのまま画面に表示されてしまう。。。
こんな時は、以下を試してみるとよいかも。
以下フォルダ内のファイルをチェック。
~$ ls /etc/apache2/mods-enabled
もしphp7.2.conf と php7.2.loadがなかったら、
~$ a2enmod php7.2
を入力して、それぞれのファイルへのシンボリックリンクを作成する。
私の場合は、これでphpコードが表示されなくなりました。
ある特定のphpファイルがうまく動かない
よく調べると、どうやらデータベースにアクセスした際に失敗しているようでした。どうやら依存パッケージが入っていない予感。。
依存パッケージを更新するとよいかも。
依存ファイルは以下のコマンドで調べることができます。
~$ apt-cache search php7.2
php7.2-mysql - MySQL module for PHP
php7.2-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.2-common - documentation, examples and common module for PHP
php7.2-xsl - XSL module for PHP (dummy)
php7.2-curl - CURL module for PHP
php7.2-mbstring - MBSTRING module for PHP
php7.2-readline - readline module for PHP
php7.2 - server-side, HTML-embedded scripting language (metapackage)
php7.2-cli - command-line interpreter for the PHP scripting language
php7.2-json - JSON module for PHP
php7.2-cgi - server-side, HTML-embedded scripting language (CGI binary)
libapache2-mod-php7.2 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.2-opcache - Zend OpCache module for PHP
たくさんでてきます。このなかで使いそうなファイルをinstallまたはUpdateしておきます。
私の場合は以下を実行しました。
~$ sudo apt-get install php7.2-mysql php7.2-curl php7.2-json php7.2-cgi php7.2-xsl
これでうまく動作できました。
まとめ
php(今回はphp7.2)のインストール方法をまとめました。また、インストール時にトラブった点について解決した方法と合わせて記載しました。