あきき☆エンジニア

〜ぷろぐらむ〜(perl,php,JavaScript,WebGL,golang,emacs,mysql)

ローカルテストサーバー(phpでビルトインサーバー)起動

追記:2018/02/10--------------------------------------
phpビルトインサーバ上のjavascript
audioの currentTime(再生位置)の値を変更したら 0になってしまい
頭から再生されてしまう現象に遭遇しました…解決作が見つかってしません…
現状phpのビルトインを諦めて…w
golang で簡単なhttpサーバプログラムを書いて使い始めました。
開発用なのでブラウザにキャッシュさせないようにしました。

phpビルトインだとaudioソースのリクエストしても Content-Type: application/octet-streamで返して来る
それとブラウザのキャッシュがからみ、audioコントールのcurrentTimeの指定ができなくなる状態へ陥るときがある
ようです(本来 Content-Type: audio/mpeg で返してくれれば正常動作すると思われる

package main

import (
    "flag"
    "os"
    "net/http"
    "log"
    "fmt"
)

var (
    addr = flag.String("http", ":9000", "HTTP service address (e.g., ':9000')")
)

func main() {
    flag.Parse()
    cwd, _ := os.Getwd()
    
    fs := http.FileServer(http.Dir(cwd))
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Cache-Control", "no-cache") // ブラウザにキャッシュさせない
        fs.ServeHTTP(w, r)
    })

    server := &http.Server{
        Addr: *addr,
        Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            log.Printf("%s %s %s", r.RemoteAddr, r.Method, r.URL.RequestURI())
            http.DefaultServeMux.ServeHTTP(w, r)
        }),
    }

    fmt.Fprintln(os.Stderr, "Listening at "+*addr)
    log.Fatal(server.ListenAndServe())
}

end 追記2018/02/10-----------------





perlスクリプトのexe化で不意に webサーバー(nginx,apache)入れなくても
phpのビルトインサーバーを使えばjavascriptphpのテストするだけならいいのでは?
って思い(ちゃんとするなら Ubuntuでやるが Windowsでやることにした)

windowsphpを入れる→以下のリンクからVC14 x64 Thread Safe (2017-Mar-16 00:40:27)を
ダウンロードしてインストール
PHP For Windows: Binaries and sources Releases

解凍して解凍したフォルダーにpathを通して
(私の解凍後の状態→ C:\Users\USERNAME\wintools\php-7.1.3-Win32-VC14-x64 
phpstart.batを作ってその中で
PATH=C:\Users\USERNAME\wintools\php-7.1.3-Win32-VC14-x64;%PATH%
とした)

サーバーのドキュメントルートへ移動して以下のコマンドを実行したら・・・

>php -S localhost:8000

vcruntime140.dllが無いというダイアログが出た
検索してしまいましたが、phpをダウンロードしたページの左側に
vc14 builds ... でMSへのページへのリンクがありましたw
MSへのリンクを張っておきます
Download Visual C++ Redistributable for Visual Studio 2015 from Official Microsoft Download Center

  • select language→Japaneseを選ぶ
  • ダウンロードボタンを押す
  • vc_redist.x64.exe にチェックを入れ Nextを押す
  • vc_redist.x64.exeをインストール


再度

>php -S localhost:8000

今度は、エラーダイアログが出ないで

>php -S localhost:8000
PHP 7.1.3 Development Server started at Sat Mar 25 17:10:57 2017
Listening on http://localhost:8000
Document root is C:\XXXXXXX...
Press Ctrl-C to quit.

起動成功
ブラウザーのurlに
http://localhost:8000/

表示が出た(ドキュメントルートに index.php index.htmlが作ってあればです)


php.iniを編集しないと mysqlsqlite、opensslが有効になっていない

インストール(解凍しただけだけど)フォルダーにphp.ini-developmentや
php.ini-productionがあるので今回は、php.ini-developmentを php.iniに
コピーしてから以下を編集しました(;を取って有効にした)

  • extension_dir = "ext"
  • extension=php_curl.dll
  • extension=php_mysqli.dll
  • extension=php_openssl.dll
  • extension=php_pdo_mysql.dll
  • extension=php_pdo_sqlite.dll