UbuntuにPHPインタプリタをインストール

目次

PHPは主にサーバーサイドで動作し、Webアプリ開発に使われていますが、PHPの文法を勉強するためだけにサーバーを作るのは面倒です。 なのでローカルで動作するPHPインタプリタをインストールしてみました。

使用OSは"Ubuntu 20.04.2"です。

PHP CLIをインストールする

コマンドラインで使用するPHPは、“PHP CLI"と言うらしいです。 aptコマンドで検索してみます。

$ apt --names-only search 'php[0-9.]*-cli'
ソート中... 完了
全文検索... 完了  
php-cli/focal,focal 2:7.4+75 all
  command-line interpreter for the PHP scripting language (default)

php7.4-cli/focal-updates,focal-security 7.4.3-4ubuntu2.4 amd64
  command-line interpreter for the PHP scripting language

デフォルトのaptリポジトリには2つありました。 デフォルトの"php-cli"をインストールしてみます。

$ sudo apt install php-cli

インストールされたバージョンを確認します。

$ php -v
PHP 7.4.3 (cli) (built: Oct  6 2020 15:47:56) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

PHPのインタラクティブモードを実行する

php -aでコマンドラインからPHPコードを直接入力して実行することができます。 「Ctrl + D」で終了します。

$ php -a
Interactive mode enabled

php > echo 30+6;
36
php > function series($num) {
php {   if ($num > 1) {
php {     return $num + series($num - 1);
php {   }
php {   return 1;
php { }
php > echo "1から10までの整数の合計 = " . series(10) . "\n";
1から10までの整数の合計 = 55
php > 
$ 
PHP CLIのインタラクティブモード

PHP CLIのインタラクティブモード

PHPのプログラムファイルを実行する

PHPソースファイル"hello.php"を作成します。

<?php
function print_hello($counter) {
    while ($counter > 0) {
        echo $counter . " hello!" . PHP_EOL;
        $counter--;
    }
}
echo "自然数を入力ー > ";
$num = trim(fgets(STDIN));
print_hello($num);

phpコマンドにファイル名を指定します。

$ php hello.php
自然数を入力ー > 5
5 hello!
4 hello!
3 hello!
2 hello!
1 hello!
$

phpのオプション

-hオプションで表示します。

$ php -h
Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -S <addr>:<port> [-t docroot] [router]
   php [options] -- [args...]
   php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No configuration (ini) files will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.