ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP プロジェクトを Nginx にデプロイするためのチュートリアル、nginxthinkphp_PHP チュートリアル

ThinkPHP プロジェクトを Nginx にデプロイするためのチュートリアル、nginxthinkphp_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:08:25823ブラウズ

Nginx での ThinkPHP プロジェクトのデプロイに関するチュートリアル、nginxthinkphp

少し前に、私は Apache と TP を使用して小さな Web サイトを開発しました。これは、TP を使用した初めての実践的な経験でもありました。 pathinfo モードの使用には慣れており、ローカルでは問題なく動作しますが、サーバーにデプロイすると、相手が Nginx を使用しているため、ThinkPHP の pathinfo モードがデフォルトでサポートされていないため、パス エラーが発生してしまいます。ページがループ内でジャンプするため、nginx をダウンロードしてローカルでテストします。

実際、nginx が pathinfo をサポートしていない問題を解決するには 2 つの解決策があります。1 つは pathinfo モードを使用しないこと、もう 1 つは pathinfo をサポートするように nginx 設定ファイルを変更することです。問題を単純化するために、最初の方法を選択しました。2 番目の方法に関しては、多くの情報を確認したところ、人によって方法が異なり、中には非常に異なるものもあり、誤解を招きやすいため、次の方法を選択しました。 simplify オフにして通常モードを選択しますが、一定のリスクはあります。 Index.php に対応するフロントエンド コードを変更した後、フロントエンドは基本的に正常であったものの、バックエンドでリダイレクトの問題が依然として発生していることがわかりました。長い間苦労した後、ログファイルを確認してみました。これまで気にしていなかったログファイルが非常に重要であることがわかりました。出力は config.php ファイルの最初の行に表示されます

sublime では、通常、BOM ヘッダーは UTF-8 ファイルに追加されます。この BOM ヘッダーは通常、ウィンドウの下では表示されず、Linux 上でも直接表示されます。文字がある場合は、文字を削除するか、最初の行で Enter キーを押して削除します。この時点で、バックエンドは基本的にアクセス可能になります。

説明が必要な小さな問題がいくつかあります。

1. ログイン時に、検証のために外部 js ファイルを介して Ajax リクエストを送信しました。js と ThinkPHP モジュール関数の間の通信でいくつかの問題が発生しました。正しいパスの記述方法がわかりませんでした。色々試してみることしかできませんが、幸いにもエントリーファイル名を直接指定することで解決できました

コードをコピーします コードは次のとおりです:

var url="system.php?m=Login&a=doLog";
$.post(url,{"staffname":$staffname,"staffpwd":$staffpwd,"verifycode":$verifycode},function(data){
If(data=="codeerr"){
alert("認証コードが間違っています!");
}else if(data=="authempty"){
alert("ユーザー名またはパスワードを入力してください!")
}else if(data=="autherr"){
alert("ユーザー名またはパスワードが間違っています!");
}else if(data=="成功"){
alert("ログイン成功!");
location.href="system.php?m=Index&a=index" //ホームページにアクセスします
}

もちろん、これは通常モードでのアクセス方法です。 pathinfo の場合は、以下のように赤い部分を変更するだけです

コードをコピーします コードは次のとおりです:

var url="doLog";
$.post(url,{"staffname":$staffname,"staffpwd":$staffpwd,"verifycode":$verifycode},function(data){
If(data=="codeerr"){
alert("認証コードが間違っています!");
}else if(data=="authempty"){
alert("ユーザー名またはパスワードを入力してください!")
}else if(data=="autherr"){
alert("ユーザー名またはパスワードが間違っています!");
}else if(data=="成功"){
alert("ログイン成功!");
Location.href="../Index/index"; //ホームページへのジャンプ方法と他のモジュールへのアクセス方法

2. ファイルをダウンロードするときに、不可解なことに常に HTML のものが大量に表示されます。これは、次のコードで変更できます。ただし、この方法では、実際にダウンロードされるファイルは HTML 形式のままです。ファイルですが、サフィックスを xls に変更したため、Excel で開くと形式の問題が表示されますが、無視してください。同時に、xls のデフォルトのエンコード形式は utf-8 ではないため、icov() 関数を使用してエンコードを変換することに注意する必要があります。

コードをコピーします コードは次のとおりです:

ob_start();
ob_end_clean();
Header( "コンテンツタイプ: application/octet-stream"); Header( "受け入れ範囲: バイト "); Header( "Content-type:application/vnd.ms-excel;charset=gb2312"); Header( "Content-Disposition:attachment;filename={$filename}.xls");



3. ほとんどのプロジェクトでは相対パス、つまりエントリ ファイルに対する相対パスが使用されるため、ファイルを削除するときにパスの問題が発生しますが、ファイルを削除するには絶対パスを使用する必要がありました。より保守的なアプローチのコードは次のとおりです

コードをコピーします

コードは次のとおりです: $path="./Public/uploads/"; $path=str_replace("\","/",realpath($path)."/") //絶対パスを取得し、区切り文字を変換します


4. nginx と php を設定するときに、fastCGI を使用し、次のコードを cmd ファイルとして保存し、クリックするだけで実行しました
"F:phpphp-cgi.exe" -b 127.0.0.1:9000 -c "F:phpphp.ini" //以下はphpファイルへのパスです 次に、nginx 設定ファイルにいくつかの文を追加します


コードをコピーします

コードは次のとおりです: 場所 ~ .php/?.* { 根 Fastcgi_pass 127.0.0.1:9000 ;
fastcgi_indexindex.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_params を含める
#pathinfo 情報を保存するために使用される変数 $path_info を定義します
set $path_info "";
#実際のアドレスを保存するために使用される変数 $real_script_name を定義します
set $real_script_name $fastcgi_script_name;
#アドレスが引用符内の正規表現と一致する場合
If ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
#変数 $real_script_name にファイルアドレスを代入します
set $real_script_name $1;
アウトアウトウェイ」 ’ダウン - set $path_info $2;
}
#fastcgi のいくつかのパラメータを設定します
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/951641.html技術記事 Nginx での ThinkPHP プロジェクトのデプロイに関するチュートリアル、nginxthinkphp 私は少し前に Apache と TP を使用して小さな Web サイトを開発しました。これは、TP を使用した私の最初の実際的な経験とみなすことができます。 pathinfo モードの使用には慣れています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。