「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
サーバー上でCGIを使って圧縮ファイルを解凍
CMSなどのサーバーインストール型のソフトは、Zipなどの圧縮ファイルで提供されることが多いです。
このような場合、圧縮ファイルのままサーバーにアップロードして、サーバー側で解凍することをお勧めします。
その際に、解凍を行うCGIを用意すれば便利です。
1.サーバー上で解凍するメリット
サーバーインストール型のソフトをサーバーにアップロードする際に、ローカルで圧縮ファイルを解凍した後、FTPでアップロードしている方は、多いのではないかと思います。
ただ、この方法では、アップロードに非常に時間がかかるというデメリットがあります。
また、場合によってはアップロードが途中で止まってしまい、最初からアップロードをやり直す必要が生じることもあります。
さらに、ファイルをアップロードした後で、ファイルのパーミッションを設定する必要が出ることもあります。
このような問題は、圧縮ファイルをそのままサーバーにアップロードして、サーバー上で解凍すれば、解決することができます。
アップロードの時間を大幅に短縮することができ、また解凍も短時間で行うことができます。
さらに、圧縮ファイルの状況によっては、パーミッションの情報も合わせて解凍されることもあり、パーミッション設定が不要になることもあります。
2.CGIで解凍
サーバー上で解凍するには、通常はSSHでサーバーにログインした上で、コマンドを入力します。
Zipファイルを解凍する場合だと、以下のようなコマンドを入力します。
unzip Zipファイル名
また、gzipファイル(拡張子がtar.gzのファイル)を解凍する場合だと、以下のようなコマンドを入力します。
tar xvzf gzipファイル名
ただ、コマンドを入力するには、いわゆる「黒い画面」を操作することが必要で、抵抗がある方が多いようです。
そこで、このコマンドを実行するようなCGIを、サーバーに設置します。
こうすれば、ブラウザからそのCGIにアクセスすることで解凍を行うことができ、黒い画面を操作する必要はありません。
3.解凍するCGIの内容
Zipファイルを解凍するCGIは、以下のようになります。
3行目の「Zipファイル名」の部分は、実際のZipファイルの名前に置き換えます。
#!/usr/bin/perl -w my $result = `unzip Zipファイル名`; print "Content-type: text/html\n\n$result";
また、gzipファイルを解凍するCGIは、以下のようになります。
3行目の「gzipファイル名」の部分は、実際のgzipファイルの名前に置き換えます。
#!/usr/bin/perl -w my $result = `tar xvzf gzipファイル名`; print "Content-type: text/html\n\n$result";
CGIには拡張子が.cgiのファイル名を付けて保存し、サーバーにアップロードして、パーミッションを705等に設定します。
また、CGIと同じディレクトリに、解凍したい圧縮ファイルもアップロードします。
この後、ブラウザでCGIにアクセスすれば、CGIと同じディレクトリにファイルが解凍され、解凍した結果(unzipコマンド等の実行結果)が表示されます。
4.注意点
ファイルの解凍が終わったら、元の圧縮ファイルと、解凍用のCGIファイルは、サーバーから削除するようにします。
サーバーに残しておくと、誰かがCGIにアクセスすると圧縮ファイルが再度解凍され、場合によっては不具合を招くこともあり得ます。