ターミナルからリクエストを送信

curl コマンドを用いて GET POST PUT DELETE を送信

$ curl -X GET REQUEST URL
$ curl -X POST REQUEST URL
$ curl -X DELETE REQUEST URL
$ curl -X PUT REQUEST URL

….あえて書くほどでも無い気もする

【PHP】Slimフレームワーク導入時の404エラー

実装

公式の通りにindex.phpを作成

// index.php
<?php
require_once "vendor/autoload.php";

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});

$app->run();

ユーザーディレクトリ配下で開発していたため以下にアクセス http://apache_server.localhost/application/hello/name → 404 エラー

原因

Slim側で設定されている.htaccessファイルが DocumentRootを参照しているため

# vendor/slim/slim/.htaccess

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#
#RewriteBase / ← これ

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

今回はApacheの設定を弄ってユーザーディレクトリでの開発をしているので Baseを変更する必要があるため、index.php と同一ディレクトリに .htaccess ファイルを作成

RewriteEngine On
RewriteBase /application/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

もう一度アクセス http://apache_server.localhost/application/hello/name

問題なく表示されれば成功

【PHP】composer 導入手順

導入

インストール

$ brew install homebrew/php/composer

依存ファイルの作成
composerに読み込ませるモジュールは当ファイルに追記していく

#composer.json

{
  "require": {
       "読み込むモジュール名"
  }
}

読み込み

$ composer install

更新

$ composer update

オートロード

所謂 require 地獄を解消してくれる機能

├── index.php
├── composer.json
├── composer.phar
├── controllers
├── test
    └── Sample.php

読み込み対象のクラスを作成
namespaceの背定義は必須のため注意

// Sample.php
<?php

namespace Test;

class Sample {
  public function test(){
    echo 'Success';
  }
}

composer.json を編集
ここは test ディレクトリ配下のクラスを Test\クラス名 で呼び出す様に定義。

{
  "require": {
  },
  "autoload": {
    "psr-4": {
      "Test\\"      : "test/"
    }
  }
}

index.php でSampleを呼び出す。

//index.php
require_once "vendor/autoload.php";
use Test\Sample;

$sample = new Sample();
$sample->test();

以下のコマンドを実行

$ php composer.phar dump-autoload

これでディレクトリにvenderディレクトリが生成される。

├── vendor
│   ├── autoload.php
│   └── composer
│       ├── ClassLoader.php
│       ├── LICENSE
│       ├── autoload_classmap.php
│       ├── autoload_namespaces.php
│       ├── autoload_psr4.php
│       ├── autoload_real.php
│       ├── autoload_static.php
│       └── installed.json

Mac での LocalApacheサーバー構築

基本操作

サーバー稼働

$ apachectl start

サーバー再起動

$ apachectl restart

サーバー停止

$ apachectl stop

ブラウザで http://localhost/ にアクセスし表示されれば成功

ユーザーディレクトリの有効化

デフォルト設定だと独自ディレクトリが読み込まれないため設定を有効化

#/etc/apache2/httpd.conf
LoadModule userdir_module libexec/apache2/mod_userdir.so
...
...
Include /private/etc/apache2/extra/httpd-userdir.conf
...
...
Include /private/etc/apache2/extra/httpd-vhosts.conf

ユーザー別設定ファイル読み込みを有効化

# /etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/users/*.conf

ユーザー設定ファイルを作成

# /etc/apache2/users/ユーザー名.conf
<Directory "/Users/ユーザー名/sample/">
    AllowOverride All
    Options Indexes FollowSymLinks Multiviews
    Require all granted
</Directory>

ホスト情報の設定

# /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

#追記
127.0.0.1 apache_server.localhost

バーチェルホストを設定

# /etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/Users/ohs30359/sample"
    ServerName apache_server.localhost

    <Directory "/Users/ohs30359/ApacheServerDir">
        Options Includes ExecCGI FollowSymLinks
        AllowOverride All
        order deny,allow
        allow from All
    </Directory>
</VirtualHost>

これで apache_server.localhost で指定ディレクトリへのアクセスが可能となる。
今までの設定を反映するためにサーバーを再起動。

$ sudo /usr/sbin/apachectl restart

サンプルディレクトリを作成しアクセス出来るかを確認

$ mkdir ~/sample
$ vim ~/sample/sample.html

公開する html は適当に…

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script>
    </script>
  </head>
  <body>
    <h1>SAMPLE Directory Load !!</h1>
  </body>
</html>

http://apache_server.localhost/

PHP設定

利用を定義 ※既にサーバーが稼働している場合は再起動が必須

# vim /etc/apache2/httpd.conf
#LoadModule php5_module libexec/apache2/libphp5.so

Ubuntu16.04 日本語入力設定

1.im-configで入力切替

$ im-config -n fcitx

2.画面右上のキーボードアイコン で「再起動」を選択
3.同じくキーボードアイコンから「設定」を選択
4.設定画面にて下記順に並び替え
・キーボード-日本語
・Mozc

【Larabel】migration reset時に外部キー制約エラーが発生

php artisan migrate:refresh

=>
[PDOException]
  SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign ke
  y constraint fails


外部キー制約が原因でドロップできないエラー。
対策としては一時的に外部キー制約を無効にする。

public function down(){
    DB::statement('SET FOREIGN_KEY_CHECKS = 0');
    Schema::drop('books');
    DB::statement('SET FOREIGN_KEY_CHECKS = 1');
}

【Larabel】assetの読み込みを追加

Larabelではassetはデフォルトでpublic直下を参照しているため
js,cssファイルに関してはpublic直下にディレクトリを切ると良い。

$ tree public
public
├── css // 追加
├── favicon.ico
├── index.php
├── javascript // 追加
├── robots.txt
└── web.config

今回は即時実行関数をテストとして実行する

// public/javascript/index.js|
(function(){
  console.log('load js file!!');
})();

asset(file_path)で対象のファイルを指定

// resources/views/books/index.blade.php
@extends('layout')

@section('content')

  {!! link_to('books/create', '新規作成') !!}

  @foreach($books as $book)
    <book>
       <a href="{{ url('books', $book->id) }}">
        {{ $book->title }}
       </a>
    </book>
  @endforeach
  <script src="{{ asset('/javascript/index.js') }}"></script>
@endsection

/books にアクセスしウェブコンソールに load js file!! が出力されていることを確認