ลองมาดูการติดตั้ง Laravel 5.3 บน Ubuntu 16.04 กันบ้าง โดยจะทดสอบบนเครื่อง ติดตั้ง PHP 7 บน Ubuntu 16.04 ที่ ติดตั้ง Composer เพื่อบริหารจัดการไลบรารี PHP
โดยจะแสดงวิธีการติดตั้งทีละขั้นตอนด้วย composer แสดงข้อความปัญหาที่เกิดขึ้น พร้อมแสดงวิธีการแก้ไขปัญหา เช่นใช้คำสั่ง apt ติดตั้งแพ็คเกจโมดูล php เพิ่มเติม ที่จำเป็นต้องใช้
เริ่มต้นใช้คำสั่ง apt list –installed เพื่อดูแพ็คเกจ php ที่ติดตั้งอยู่แล้ว
dev@ubuntu-1604:~$ apt list --installed | grep php WARNING: apt does not have a stable CLI interface. Use with caution in scripts. php-cli/xenial,xenial,now 1:7.0+35ubuntu6 all [installed] php-common/xenial,xenial,now 1:35ubuntu6 all [installed,automatic] php7.0-cli/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-common/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-json/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-opcache/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-readline/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic]
เวอร์ชัน php ที่ใช้
dev@ubuntu-1604:~$ php -v PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies
โมดูล php ที่สามารถเรียกใช้ได้
dev@ubuntu-1604:~$ php -m [PHP Modules] calendar Core ctype date exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop sockets SPL standard sysvmsg sysvsem sysvshm tokenizer Zend OPcache zlib [Zend Modules] Zend OPcache
ใช้ composer ระบุคำสั่ง create-project เพื่อติดตั้งแพ็คเกจ laravel/laravel ไว้ในโฟลเดอร์ blog
dev@ubuntu-1604:~$ composer create-project --prefer-dist laravel/laravel blog Installing laravel/laravel (v5.3.0) Failed to download laravel/laravel from dist: The zip extension and unzip command are both missing, skipping. The php.ini used by your command-line PHP is: /etc/php/7.0/cli/php.ini Now trying to download from source - Installing laravel/laravel (v5.3.0) Cloning f5dfa2057e800e15ecc1f5609016dfbc08fc643e from cache Created project in blog > php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 - laravel/framework v5.3.6 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. - laravel/framework v5.3.5 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. - laravel/framework v5.3.4 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. ... - Installation request for laravel/framework 5.3.* -> satisfiable by laravel/framework[v5.3.0, v5.3.1, v5.3.2, v5.3.3, v5.3.4, v5.3.5, v5.3.6]. To enable extensions, verify that they are enabled in those .ini files: - /etc/php/7.0/cli/php.ini - /etc/php/7.0/cli/conf.d/10-opcache.ini - /etc/php/7.0/cli/conf.d/10-pdo.ini - /etc/php/7.0/cli/conf.d/20-calendar.ini - /etc/php/7.0/cli/conf.d/20-ctype.ini - /etc/php/7.0/cli/conf.d/20-exif.ini - /etc/php/7.0/cli/conf.d/20-fileinfo.ini - /etc/php/7.0/cli/conf.d/20-ftp.ini - /etc/php/7.0/cli/conf.d/20-gettext.ini - /etc/php/7.0/cli/conf.d/20-iconv.ini - /etc/php/7.0/cli/conf.d/20-json.ini - /etc/php/7.0/cli/conf.d/20-phar.ini - /etc/php/7.0/cli/conf.d/20-posix.ini - /etc/php/7.0/cli/conf.d/20-readline.ini - /etc/php/7.0/cli/conf.d/20-shmop.ini - /etc/php/7.0/cli/conf.d/20-sockets.ini - /etc/php/7.0/cli/conf.d/20-sysvmsg.ini - /etc/php/7.0/cli/conf.d/20-sysvsem.ini - /etc/php/7.0/cli/conf.d/20-sysvshm.ini - /etc/php/7.0/cli/conf.d/20-tokenizer.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
สังเกตด้านบนจะมีข้อความ Failed to download laravel/laravel from dist: The zip extension and unzip command are both missing, skipping
แนะนำให้ติดตั้ง php-zip เพิ่มเติม เพื่อให้ composer เรียกใช้ได้
นอกจากนี้ยังขึ้นข้อความ requires ext-mbstring จำเป็นต้องติดตั้งโมดูล php-mbstring เพิ่มเติม
ใช้คำสั่ง apt install ติดตั้งแพ็คเกจ php-zip เพิ่มเติม
dev@ubuntu-1604:~$ sudo apt install php-zip
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libzip4 php7.0-zip
The following NEW packages will be installed:
libzip4 php-zip php7.0-zip
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 58.0 kB of archives.
After this operation, 198 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
ติดตั้งแพ็คเกจ php-mbstring
dev@ubuntu-1604:~$ sudo apt install php-mbstring
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
php7.0-mbstring
The following NEW packages will be installed:
php-mbstring php7.0-mbstring
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 467 kB of archives.
After this operation, 1,508 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
...
ถ้าลองรัน php -m จะมีบรรทัดชื่อโมดูล mbstring, zip เพิ่มขึ้นมา
รัน composer ติดตั้ง laravel อีกครั้ง
dev@ubuntu-1604:~$ composer create-project --prefer-dist laravel/laravel blog
Installing laravel/laravel (v5.3.0)
[InvalidArgumentException]
Project directory blog/ is not empty.
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]
ต้องลบโฟลเดอร์ blog เดิมออกก่อน แล้วค่อยรัน composer ใหม่
dev@ubuntu-1604:~$ ls -l
total 16
drwxrwxr-x 12 dev dev 4096 Sep 3 14:05 blog
dev@ubuntu-1604:~$ rm -rf blog/
dev@ubuntu-1604:~$ composer create-project --prefer-dist laravel/laravel blog
Installing laravel/laravel (v5.3.0)
- Installing laravel/laravel (v5.3.0)
Downloading: 100%
Created project in blog
> php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpunit/phpunit 5.5.4 requires ext-dom * -> the requested PHP extension dom is missing from your system.
- phpunit/phpunit 5.5.3 requires ext-dom * -> the requested PHP extension dom is missing from your system.
- phpunit/phpunit 5.5.2 requires ext-dom * -> the requested PHP extension dom is missing from your system.
...
- Installation request for phpunit/phpunit ~5.0 -> satisfiable by phpunit/phpunit[5.0.0, 5.0.1, 5.0.10, 5.0.2, 5.0.3, 5.0.4, 5.0.5, 5.0.6, 5.0.7, 5.0.8, 5.0.9, 5.1.0, 5.1.1, 5.1.2, 5.1.3, 5.1.4, 5.1.5, 5.1.6, 5.1.7, 5.2.0, 5.2.1, 5.2.10, 5.2.11, 5.2.12, 5.2.2, 5.2.3, 5.2.4, 5.2.5, 5.2.6, 5.2.7, 5.2.8, 5.2.9, 5.3.0, 5.3.1, 5.3.2, 5.3.3, 5.3.4, 5.3.5, 5.4.0, 5.4.1, 5.4.2, 5.4.3, 5.4.4, 5.4.5, 5.4.6, 5.4.7, 5.4.8, 5.5.0, 5.5.1, 5.5.2, 5.5.3, 5.5.4].
To enable extensions, verify that they are enabled in those .ini files:
- /etc/php/7.0/cli/php.ini
- /etc/php/7.0/cli/conf.d/10-opcache.ini
- /etc/php/7.0/cli/conf.d/10-pdo.ini
- /etc/php/7.0/cli/conf.d/20-calendar.ini
- /etc/php/7.0/cli/conf.d/20-ctype.ini
- /etc/php/7.0/cli/conf.d/20-exif.ini
- /etc/php/7.0/cli/conf.d/20-fileinfo.ini
- /etc/php/7.0/cli/conf.d/20-ftp.ini
- /etc/php/7.0/cli/conf.d/20-gettext.ini
- /etc/php/7.0/cli/conf.d/20-iconv.ini
- /etc/php/7.0/cli/conf.d/20-json.ini
- /etc/php/7.0/cli/conf.d/20-mbstring.ini
- /etc/php/7.0/cli/conf.d/20-phar.ini
- /etc/php/7.0/cli/conf.d/20-posix.ini
- /etc/php/7.0/cli/conf.d/20-readline.ini
- /etc/php/7.0/cli/conf.d/20-shmop.ini
- /etc/php/7.0/cli/conf.d/20-sockets.ini
- /etc/php/7.0/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.0/cli/conf.d/20-sysvsem.ini
- /etc/php/7.0/cli/conf.d/20-sysvshm.ini
- /etc/php/7.0/cli/conf.d/20-tokenizer.ini
- /etc/php/7.0/cli/conf.d/20-zip.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
ขึ้นข้อความ requires ext-dom ต้องติดตั้งแพ็คเกจ php-xml เพิ่มเติม
dev@ubuntu-1604:~$ sudo apt install php-xml
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libxslt1.1 php7.0-xml
The following NEW packages will be installed:
libxslt1.1 php-xml php7.0-xml
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 259 kB of archives.
After this operation, 968 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
ถ้ารัน php -m จะมี dom, SimpleXML, wddx, xml, xmlreader, xmlwriter, xsl เพิ่มขึ้นมา
ลบโฟลเดอร์ blog แล้วรัน composer ติดตั้ง laravel ใหม่อีกครั้ง
dev@ubuntu-1604:~$ rm -rf blog/ dev@ubuntu-1604:~$ composer create-project --prefer-dist laravel/laravel blog Installing laravel/laravel (v5.3.0) - Installing laravel/laravel (v5.3.0) Loading from cache Created project in blog > php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Updating dependencies (including require-dev) - Installing vlucas/phpdotenv (v2.4.0) Downloading: 100% - Installing symfony/polyfill-mbstring (v1.2.0) Downloading: 100% - Installing symfony/var-dumper (v3.1.3) Downloading: 100% ... - Installing laravel/framework (v5.3.6) Downloading: 100% ... - Installing phpunit/phpunit (5.5.4) Downloading: 100% - Installing symfony/css-selector (v3.1.3) Downloading: 100% - Installing symfony/dom-crawler (v3.1.3) Downloading: 100% symfony/var-dumper suggests installing ext-symfony_debug () symfony/translation suggests installing symfony/config () symfony/routing suggests installing doctrine/annotations (For using the annotation loader) ... laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).) laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).) laravel/framework suggests installing symfony/psr-http-message-bridge (Required to psr7 bridging features (0.2.*).) sebastian/global-state suggests installing ext-uopz (*) phpunit/phpunit-mock-objects suggests installing ext-soap (*) phpunit/php-code-coverage suggests installing ext-xdebug (>=2.4.0) phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) Writing lock file Generating autoload files > Illuminate\Foundation\ComposerScripts::postUpdate > php artisan optimize Generating optimized class loader > php artisan key:generate Application key [base64:eM1Gkw/0zPkMVWIqZO4cmB/qhopIk2hpZlq8iuTfpek=] set successfully.
เพิ่มเติม เพื่อให้ Laravel ติดต่อฐานข้อมูล SQLite และ MySQL ได้ แนะนำให้ติดตั้งแพ็คเกจ php-pdo-sqlite และ php-pdo-mysql ด้วย
dev@ubuntu-1604:~$ sudo apt install php-pdo-sqlite dev@ubuntu-1604:~$ sudo apt install php-pdo-mysql
สรุปชื่อแพ็คเกจ php ที่ติดตั้งบน Ubuntu 16.04 เพื่อใช้ติดตั้ง Laravel 5.3
dev@ubuntu-1604:~$ apt list --installed | grep php WARNING: apt does not have a stable CLI interface. Use with caution in scripts. php-cli/xenial,xenial,now 1:7.0+35ubuntu6 all [installed] php-common/xenial,xenial,now 1:35ubuntu6 all [installed,automatic] php-mbstring/xenial,xenial,now 1:7.0+35ubuntu6 all [installed] php-xml/xenial,xenial,now 1:7.0+35ubuntu6 all [installed] php-zip/xenial,xenial,now 1:7.0+35ubuntu6 all [installed] php7.0-cli/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-common/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed] php7.0-json/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-mbstring/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-mysql/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed] php7.0-opcache/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-readline/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-sqlite3/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed] php7.0-xml/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic] php7.0-zip/xenial-updates,xenial-security,now 7.0.8-0ubuntu0.16.04.2 amd64 [installed,automatic]
สรุปรายชื่อโมดูล php ที่เรียกใช้งานได้
dev@ubuntu-1604:~$ php -m [PHP Modules] calendar Core ctype date dom exif fileinfo filter ftp gettext hash iconv json libxml mbstring mysqli mysqlnd openssl pcntl pcre PDO pdo_mysql pdo_sqlite Phar posix readline Reflection session shmop SimpleXML sockets SPL sqlite3 standard sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter xsl Zend OPcache zip zlib [Zend Modules] Zend OPcache
cd เข้าไปใน blog ลองดูชื่อไฟล์ของ Laravel 5.3 ที่ติดตั้งได้
dev@ubuntu-1604:~/blog$ ls -l total 192 drwxrwxr-x 6 dev dev 4096 Sep 3 14:12 app -rw-rw-r-- 1 dev dev 1646 Sep 3 14:12 artisan drwxrwxr-x 3 dev dev 4096 Sep 3 14:12 bootstrap -rw-rw-r-- 1 dev dev 1283 Sep 3 14:12 composer.json -rw-rw-r-- 1 dev dev 123589 Sep 3 14:18 composer.lock drwxrwxr-x 2 dev dev 4096 Sep 3 14:12 config drwxrwxr-x 5 dev dev 4096 Sep 3 14:12 database -rw-rw-r-- 1 dev dev 556 Sep 3 14:12 gulpfile.js -rw-rw-r-- 1 dev dev 400 Sep 3 14:12 package.json -rw-rw-r-- 1 dev dev 930 Sep 3 14:12 phpunit.xml drwxrwxr-x 4 dev dev 4096 Sep 3 14:12 public -rw-rw-r-- 1 dev dev 1918 Sep 3 14:12 readme.md drwxrwxr-x 5 dev dev 4096 Sep 3 14:12 resources drwxrwxr-x 2 dev dev 4096 Sep 3 14:12 routes -rw-rw-r-- 1 dev dev 563 Sep 3 14:12 server.php drwxrwxr-x 5 dev dev 4096 Sep 3 14:12 storage drwxrwxr-x 2 dev dev 4096 Sep 3 14:12 tests drwxrwxr-x 31 dev dev 4096 Sep 3 14:18 vendor
ใช้ php รันไฟล์ artisan เพื่อดูคำสั่งและออปชัน ที่ใช้ช่วยในการพัฒนาโปรแกรมด้วย Laravel
dev@ubuntu-1604:~/blog$ php artisan
Laravel Framework version 5.3.6
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under.
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
clear-compiled Remove the compiled class file
down Put the application into maintenance mode
env Display the current framework environment
help Displays help for a command
inspire
list Lists commands
migrate Run the database migrations
optimize Optimize the framework for better performance
serve Serve the application on the PHP development server
tinker Interact with your application
up Bring the application out of maintenance mode
app
app:name Set the application namespace
auth
auth:clear-resets Flush expired password reset tokens
cache
cache:clear Flush the application cache
cache:table Create a migration for the cache database table
config
config:cache Create a cache file for faster configuration loading
config:clear Remove the configuration cache file
db
db:seed Seed the database with records
event
event:generate Generate the missing events and listeners based on registration
key
key:generate Set the application key
make
make:auth Scaffold basic login and registration views and routes
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:seeder Create a new seeder class
make:test Create a new test class
migrate
migrate:install Create the migration repository
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
migrate:status Show the status of each migration
notifications
notifications:table Create a migration for the notifications table
queue
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
queue:forget Delete a failed queue job
queue:listen Listen to a given queue
queue:restart Restart queue worker daemons after their current job
queue:retry Retry a failed queue job
queue:table Create a migration for the queue jobs database table
queue:work Process the next job on a queue
route
route:cache Create a route cache file for faster route registration
route:clear Remove the route cache file
route:list List all registered routes
schedule
schedule:run Run the scheduled commands
session
session:table Create a migration for the session database table
storage
storage:link Create a symbolic link from "public/storage" to "storage/app/public"
vendor
vendor:publish Publish any publishable assets from vendor packages
view
view:clear Clear all compiled view files
เริ่มต้น รัน php artisan ระบุคำสั่ง serve เพื่อรันเว็บเซิร์ฟเวอร์สำหรับการทดสอบการพัฒนาโปรแกรมด้วย Laravel โดยที่ไม่จำเป็นต้องติดตั้งเว็บเซิร์ฟเวอร์ เช่น Apache หรือ Nginx เลย
dev@ubuntu-1604:~/blog$ php artisan serve
Laravel development server started on http://localhost:8000/
ดีฟอลต์คำสั่ง serve จะเรียกเว็บได้จากภายในตัวเซิร์ฟเวอร์เองเท่านั้น (localhost) ต้องระบุออปชัน –host ระบุ IP ของเซิร์ฟเวอร์ เพื่อให้เครื่องอื่นๆ มาเรียกใช้เว็บเซิร์ฟเวอร์ที่รันได้
dev@ubuntu-1604:~/blog$ php artisan serve --host 192.168.56.116
Laravel development server started on http://192.168.56.116:8000/
ตัวอย่างหน้าเว็บดีฟอลต์ของ Laravel 5.3 ที่เปิดจาก browser
จะเห็นว่ามีข้อความแสดง IP ของเครื่องที่เรียกเข้ามาด้วย
dev@ubuntu-1604:~/blog$ php artisan serve --host 192.168.56.116
Laravel development server started on http://192.168.56.116:8000/
[Sat Sep 3 14:19:46 2016] 192.168.56.1:50196 [200]: /favicon.ico
^C
กด [Ctrl]+[c] เพื่อออกจากคำสั่ง serve
ขอบคุณมากๆนะครับ บทความนี้แก้ปัญหาที่ผมติดได้มากๆเบยครับผม
เป็นบทความที่ดีมากครับ ขอบคุณครับ ^^
ขอบคุณมากครับ เพิ่งหัดเล่น Ubuntu อยู่พอดีเลย
ขอบคุณมากครับ คุณครู
ยอดเยี่ยมบทความนี้ ผมทำตามใช้ได้งาน
มีคำถามเพิ่มเติม
กรณีติดตั้ง ubuntu16.04.1 บน VBox (ทำ box เอง ดูตามในบทความของ สปาฯ เช่นกัน)
และใช้ vagrant เพื่อติดต่อ VBox
เมื่อรัน php artisan serv บนฝั่ง vbox
บนเบราเซอร์ ทำอย่างไรจึงจะเรียกใช้งานได้ เหมือนตัวอย่างนี้ที่ใช้ http://192.168.56.116:8000/
้ต้องไปกำหนดค่าที่ VBox หรือ vagrant อย่างไร
รบกวนด้วยครับ
ขอตอบคำถามที่ตั้งคำถามเอง นะครับ เนื่องจากผมทำได้แล้ว
1. กำหนดใน Vagrantfile ให้มีค่าเป็น
config.vm.network “public_network”, auto_config: false
2.) ล็อกอินเข้า VBox ที่ผมติดตั้ง config.vm.box = “your box” ในที่นี้ผมใช้ Ubuntu16.04.1 นี่แหละ
กำหนดไอพีแอดเดรสของเครื่องมีเป็นวงเดียวกันกับเครื่องคอมพิวเตอร์เรา รวมถีงเกตเวย์ที่ออกเน็ตด้วย
ข้อนี้ผมได้วิธีทำมาจากเว็บนี้
http://askubuntu.com/questions/766131/set-static-ip-ubuntu-16-04
ผลที่ได้
– ใช้คำสั่ง ping จากเครื่องคอมฯ ไปหา VBox เจอ
– รัน php artisan serv –host 192.168.1.9:8000
เมื่อเรียกเว็บจากเบราเซอร์ ก็รันได้
เขียน Laravel ฐานข้อมูล ก็รันได้
+++++
ผิดถูกขออภัยนะครับ (ผมไม่เก่งด้านเอดมิน)
ขอบคุณมากครับ