作成者別アーカイブ: admin

WordPressって何?という人のためのスクリーンショット集(後編)

前編はこちらです。

後編ではブログデザインの変更方法のうち、ダッシュボードの左メニューからアクセスできる初心者向けのものを中心に説明します。ここで紹介する用語とそれぞれの役割の違いを抑えておけば、日常的に触る機会が無くてもWordPressデザインの話題には大体ついていけるようになるに違いありません。

テーマ 〜ブログの構成や見た目トータルのパッケージ

まず一番大掛かりなものから説明します。テーマという用語は他の多くのWEBサービスやオフラインソフトウェアでも使われる事が多く、さらにそれぞれ指示対象が異なっているようなのでややこしいのですが、WordPressの用語として使われる場合ブログの見た目と構成のパッケージを示しています。WordPressインストール直後のシンプルなブログデザインを、写真集風にしたい、とか企業ホームページ風にしたい、など思いついた際、最も手っ取り早いのは無償で(あるいはごくまれに有償で)配布されているWordPressテーマをインストールすることです。テーマのインストールはダッシュボード上で簡単にできるので、スクリーンショットで確認してみましょう。

テーマの管理画面

左メニューの”外観”からサブメニューの”テーマ”を選びます。現在のヴァージョンのWordPressではTwenty Elevenというテーマがデフォルトになっているので、現在のテーマとしてここに表示されています。この画面の下の方に見えるスクリーンショットは、インストールされているが使用中でないテーマを表示しています。

テーマのインストール

”テーマのインストール”タブを選ぶと、WordPress本家に登録されたテーマをキーワードや種別で検索できます。

テーマのダウンロード

テーマインストール成功

今回は試みにAdventure Journalという旅日記風のテーマを入れてみましょう。インストール成功後、デフォルトテーマに設定されている事に注目して下さい。これでブログのアドレスにアクセスすると、ちゃんとテーマの変更が行われています。

テーマ変更後ブログトップ

前回のトップページとは随分見た目が変わりましたね。その一方記事本文などはちゃんと引き継がれているので、テーマの入れ外しの試行錯誤が安心してできます。

ウィジェット 〜ページに表示する単機能の部品

次にウィジェットを説明します。iOSにはウィジェット、Windowsにはガジェットという名前で搭載されている、天気予報などを表示する小さなウィンドウと基本的に同じです。好きなときに追加・取り外しができるのが特徴で、当ブログの右側にある検索窓やタグクラウド、記事リンクなどは全てウィジェットとして追加しています。
ダッシュボードの左メニュー”外観”のサブメニュー”ウィジェット”を選択してみましょう。

ウィジェット追加中

左のスペースに使えるウィジェット一覧があるので、好きなウィジェットを対応する右側のエリアにドラッグ&ドロップすると追加完了します。ここではPage SidebarというエリアにRSS表示のウィジェットを追加しているところです。2カラムのデザインでしたので、当ブログと同じように記事エリアの右側にウィジェットが追加されていきます。
ページを3カラムにして、左側にウィジェットを登録したい場合はどうなるでしょうか。カラム数などの設定は、テーマが対応していれば”外観”メニューのサブメニュー”Theme Options”から行う事ができます(テーマによってこの項目名は違っていたりしますが、大体このような名前&位置です)。

カラム数変更中

3カラムに設定したので、ウィジェット設定画面のエリアが、Page Sidebar(Left)、Page Sidebar(Right)という具合に変わっています。追加したいカラムのエリアにウィジェットを投げ込みましょう。

Sidebarエリアが増殖

ちなみにトップページのサイドバーエリアにウィジェットを追加するためには、Blog Sidebarというエリアに投げ込む必要があります。Page Sidebarは個別ページ(当ブログでの例ならaboutページ)にウィジェットを追加するエリアですので、混乱しないよう注意が必要です。

3カラム化確認

Blog Sidebarへの追加が終わり、ちゃんとトップページに反映されました。ウィジェットの説明は大体こんなところです。

プラグイン 〜ブログの機能を拡張する

プラグインという名称も比較的ソフトウェアの世界ではよく使われます。当世のゲームで言えばmodといったところでしょうか。つまりそれが追加される事によって、新たに機能が増えるというパッケージです。ウィジェットとの違いは、ウィジェットがブログに表示する要素であるのに対し、プラグインは必ずしも表示部を持たなくて良いといったところでしょうか。投稿記事中に追加できたりするのも、ウィジェットには無い特徴です。このブログでちょくちょく登場するハイライト付きのソースコードなどは、WP-Syntaxというプラグインを入れて実現しているものだったりします。

プラグインの管理はダッシュボード左メニューの”プラグイン”から行います。サブメニューの”インストール済みプラグイン”でプラグインの使用および停止を切り替えられます。

プラグイン管理

”新規追加”サブメニューから検索して新たに追加する事もできます。

プラグイン検索

プラグインも無料のものが多いので沢山入れたくなりますが、しばしばプラグイン同士の相性問題などで正常に動かなくなったりするので、機能の重複がありそうなものを同時に入れるのは避け、一機能につき一つというように決め打ちをしましょう。

以上の3つの用語は基本ですので、覚えておいて損はありません。ただしこれらが完全に独立したパッケージとして存在しているというわけではなく、テーマを落としてきたらウィジェットが付属していた、あるいはプラグインを入れたらテーマとウィジェットも一緒に付いてきたなどの例もあります。ディレクトリベースでの作業では面倒臭い事になるのですが、ダッシュボード上での見え方はあくまで分類に沿う筈なので、細かい事は気にしないで、そういう事もあると了解して下さい。


WordPressって何?という人のためのスクリーンショット集(前編)

ここ10年来のホームページ制作手段の変遷を、わずか十数行で振り返ってみましょう。10年前、安価なADSLの登場でそれまでのテキストサイトなどの軽量コンテンツから、画像主体のページ作りへの移行が行われます。また同時期にCSSの事実上標準としてCSS2.1が提唱されたことにより、フレームやテーブルでのページ構成からCSSでの段組みへと趨勢が移行します。それによってかよらずか、凡百のお手軽なホームページ制作ソフトが淘汰され、Dreamweaverの一人勝ち状態へと市場が移行していきます。なおDreamweaverはFlashと並び2005年にAdobeに買収されるまでのMacromedia社の屋台骨となっていました。
一方ライトユーザ向けホームページ作成環境としては、ブログが次第にその地位を確かなものとしていきます。ブログブームは、さる芸能人ブログが脚光を浴びた2004年頃を始点として良さそうですが、その後アメーバやライブドアといった企業のブログサービスが一般の注目を集め、一方ブログのカスタマイズにまで踏み込むユーザはMovable TypeといったCMSに手を出し始めます。やがてMovable Typeのライセンスの不自由さが広く知られたことなどにより、日本では2007年頃にWordPressとのシェア逆転が起こり、現在ではWordPressがCMSのトップシェアに躍り出ています(データを調べていてびっくりしたのは、CMSの世界シェアで50%を占めるのみならず、全ウェブサイトの中でも16%をWordPressが占めるということです。こちらを参照)。

WordPressがそれまでのブログブームと異なるのは、とにかく日記ページのようなものを作成したいという一般ユーザのニーズに応えるのみならず、企業のフロントページのような採用例も沢山存在するということです。その理由として、WordPressがSEO的に悪くはない(各種プラグインや機能の利用によりSEOのイロハの部分を工数をかけずに対応できる)こと、CMSを使わないサイト制作ではブラウザ間ギャップの吸収という敷居がまだ存在するという現状、企業側、閲覧者側双方の企業ページに対する意識の変化というものが挙げられるのではないかと思われます。
最後に挙げた意識の変化とは、企業ページがブログのようなコンテンツに応じたレイアウト変化を基調とすることに対する、閲覧者側の違和感の払拭と企業側の許容姿勢の出現です。その裏には、それまでの企業ページが紙媒体の延長のようなかっちりとしたレイアウトを求めていたのに対し、現在ではブログのようなアクティブなレイアウトにした方が、閲覧者にコンテンツ更新の期待感を抱かせ易いという優位性の認知があったのではないかと考えられます(こうした意識変化は、企業のトップページに陣取る”ツイートする”ボタンや”いいね!”ボタンに象徴されてると言えましょう。これらは従来の紙媒体の延長のホームページ制作からは出現しません)。

さて、そんなWordPressですが、さすがにトップシェアをひた走るだけあり、ライトユーザからディープなユーザまでの様々なニーズに対応する懐の大きさがあります。実は、唐突にこのエントリでホームページ制作の歴史を語りだしたのは、各々の制作手段の裏にそれを利用したサイト作りでの挫折を味わった多数のユーザがいることを示唆して、それに対してWordPressは程よく簡単なので、挫折組も今一度トライしてみましょうという流れに持っていきたかったのです。
かく言う私自身も、始めは見よう見まねのhtml手打ちサイト(テーブルレイアウト)から始まり、Mozilla SeamonkeyでGUIによるエディットの恩恵を受けるものの、できあがったサイトは不要な<div>、<span>だらけで挫折。本格的にCSSの勉強を始めて組み上げてみるものの、凝った事をやろうとする時の面倒臭さと技術力の欠如により挫折。というように、各パラダイムで挫折していました。そのような私に共通していたのは、とにかくありきたりなサイトでなく、自分好みのカスタマイズを施したサイトを作りたいという欲求でした。
その点WordPressにはカスタマイズの手段がいくつか存在し、それぞれの手段が難易度別にピンからキリまで分かれています。つまり、始めはごく簡単なカスタマイズから手を出して、飽きた段階で一休み。機会を見つけて高度なカスタマイズににチャレンジするというステップでのサイト拡張もできるのです。

能書きばかりになってしまっては仕方が無いので、実際のスクリーンショットで機能を説明していきましょう。導入方法については過去のエントリで説明済みですので、インストールが終わった段階から紹介を始めます。
WordPressをインストールしたディレクトリのアドレスにアクセスすると、既にブログが立ち上がった状態になっています。

インストール直後のWordPressブログ

この状態でトップページのリンクからログインすると、ダッシュボードと呼ばれるブログの管理画面が表示されます。あるいはスクリーンショットにもあるように、トップページのアドレスの後ろにwp-admin/と追加して移動することもできます。

ダッシュボード

ダッシュボード画面の左側の項目で、記事の投稿や各種設定を行います。今回は基本的なブログ更新作業で使う項目を眺めてみましょう。”投稿”メニューをクリックし、サブメニューの”投稿一覧”をクリックすることで、今まで書いた記事の一覧が現れます。

投稿一覧

インストール直後には、サンプル投稿が一件入っています。投稿名の上にポインタを持ってくると、編集やゴミ箱に入れるなどの操作のリンクが現れます。”編集”をクリックすると、次のような編集画面が出ます。

投稿編集画面

Hello World!と書いてある部分が投稿のタイトル、下のフィールドが本文になります。現在は”ビジュアル”というタブが選択されていますが、”html”タブに切り替えると直接タグ打ちで本文の編集ができるため、熟練者が隔靴掻痒でイライラすることもありません。もちろん、ビジュアルエディタに戻して編集内容をすぐに確認することができます。
本文フィールドの上部のボタンは、字体を変えたり箇条書きモードに変更する際などに使います。テキストにリンクを付与する場合は、対象のテキストを選択した状態で鎖のイラストのボタンを押すことで設定ウィンドウが出るようになっています。

また、本文フィールドの左上にある”アップロード/挿入”の隣のアイコンをクリックすることで、画像などを本文中に入れることができます。

メディアの挿入メディアの挿入設定

ご覧の通り、最新版のWordPressではアップロードファイルをドラッグ&ドロップで追加できるようになっています(html5の恩恵でしょう)。アップロード後のファイルはメディアライブラリに追加されるので、同じウィンドウの”メディアライブラリ”リンクをクリックし、登録された画像をリストから選択、画像のタイトルやサイズ、文章の回り込み設定などを設定したら、”投稿に挿入”ボタンで挿入します。

投稿時には、記事のカテゴリやタグを設定することも可能です。投稿編集画面の右のウィンドウからカテゴリやタグを選んで、チェックボックスで設定します。カテゴリやタグの管理は左の”投稿”メニューのサブメニューから専用の編集画面に行けますので、管理や削除などはそちらで行います。

ブログの記事についたコメントは、左のメニューの”コメント”から管理を行います。インストール時の設定ですと、コメントが承認制になっている筈なので、各コメントについてコメント管理画面から承認を行わないとブログ上に表示されないので注意して下さい。

コメント管理画面

左メニューの”固定ページ”というのは、ブログ記事とは別にページコンテンツを作る場合に使います。このブログであれば、タイトル文字の下にある”about”というリンクが固定ページにあたります。

以上、WordPressの基本的なブログ機能の使い方を説明しました。カスタマイズ手段については、長くなりましたので次回説明することにします。


PHPでシンプルな文字列検索をする

PCREの場合globの場合とPHPのパターン検索方法を挙げましたが、単純に文字列中で特定文字列に完全一致する部分を探すのであれば、strpos関数やstrstr関数を使用すれば事足ります。
strpos関数は文字列中の検索文字列が最初に出現する場所のインデックスを返します。さらに一致する箇所が無い場合にFALSEを返すので、文字列中に検索文字列が存在するか/しないかを調べるPHPの関数も、実はstrposです。

<?php
$string = "abcdefgh";
$search = "def";
if(($pos = strpos($string,$search)) === FALSE){
echo "検索文字列と一致する箇所は無い";
}
else {
echo ($pos + 1)."文字目から一致";
}
?>

引数1が検索対象、引数2が探す文字列、オプションの引数3は探し始める位置です。比較演算子に===を使うのは、FALSE以外のときでも返り値で0を返す可能性があるからですね。なおこのstrposのヴァリエーションとして、大文字小文字の区別をしないstripos、最後に現れる位置を調べるstrrposなどがあります。

strstr関数は、検索文字列以降の文字列を返り値として得る際に使います。

strstr(引数1,引数2,引数3);
引数1,2strposに同じ。
引数3 検索文字列より前の部分を返すフラグ。オプション。

大文字小文字の区別をしないstristrというヴァリエーションもあります。

両方とも使いたいときには名前が出てこない影の薄い関数なので、メモっておきました。


PHPのもう一つのパターンマッチング関数glob

PHP4.3.0以降搭載されているglob関数は、パス文字列を引数に与えることでパターンマッチするパスを探して配列として返してくれる便利な関数です。パターンマッチということで、正規表現のパターンを与えるとマッチングをしてくれるPCRE関数(preg_matchなど)に近いように思われますが、globが解釈するパターンはUNIXシェルのパス名マッチのパターンであり、正規表現より煩雑にならない書き方ができるようです。
たとえば前回preg_grep関数と正規表現を用いて実装した、ディレクトリを検索してその中の拡張子が.jpgのファイルだけ抽出し、セレクトメニューの項目名にするという処理は、globを使うとこのような感じになります。

<?php
$dir = "sample";
$parentlength = strlen($dir) + 1;
echo '<form name="" method="" action=""><select name="">';
foreach(glob($dir."/*.csv") as $val){
echo '<option value="'.htmlentities(substr($val,$parentlength),ENT_QUOTES,"UTF-8").'">'
.htmlentities(substr($val,$parentlength),ENT_QUOTES,"UTF-8").'</option>';
}
echo '</select><input type="submit" value="表示"></form>';
?>

preg_grepでの例の再現のため、項目名としてファイル名のみを取り出そうとしてややこしくなっている部分はありますが、注目すべきはかの例にあったscandir関数のような、ディレクトリ内のパスを取得し配列に納めるというプロセスが省略されているという点です。glob関数はパス検索に特化しており、scandirの直接の上位互換と捉えても良いかもしれません。
さて、関数の説明です。まずパターン文字列の表記方法ですが、PCRE関数のように文字列の前後をスラッシュで囲む必要は無く、パスにワイルドカードなどの特殊記号を交えたものをそのまま与えます。以下が特殊記号です。

記号 意味 使用例 マッチするテキスト
*(アスタリスク) 0文字以上の任意の文字列(ワイルドカード) /home/*/lib /home/userA/lib,home/userB/lib
?(クエスチョンマーク) 任意の1文字 /img/img???.jpg /img/img001.jpg,/img/img002.jpg
¥(円マーク) 特殊文字のエスケープ(windows) /post.php¥?* /post.php?post=””
\(バックスラッシュ) 特殊文字のエスケープ(windows以外) /post.php\?* /post.php?post=””
[](角括弧) 括弧内に現れる文字のどれか /te[xs]t.php /text.php,/test.php
-(ハイフン)を使った応用編 /te[a-z]t.php /tebt.php,/tewt.php(aからzまで可)
-(ハイフン)を使った応用編 /te[1-9]t.php /te3t.php,/te8t.php(1から9まで可)
!(エクスクラメーション)は角括弧中で否定の意 /te[!nx]t.php /test.php(text,tentはダメ)

正規表現と細かな違いがありますね。アスタリスクがワイルドカードの役割をするという辺りは、CSSやSQLの熟練者にはわかり易くて良いのではないでしょうか。
書式と定数の説明です。

glob(引数1,引数2);
引数1 : パターン文字列
引数2 : オプションフラグ。省略可。以下の定数をとり得る。
GLOB_MARK ディレクトリがマッチした場合最後にセパレータのスラッシュを付加
GLOB_NOSORT 結果として返す配列をソートしない(デフォルトはソート)
GLOB_NOCHECK マッチする結果が無かった場合、検索パターン自体を返す
GLOB_NOESCAPE エスケープ文字(¥,\)を機能させない
GLOB_BRACE {パターン1,パターン2,パターン3}という指定で複数パターンの検索をする
GLOB_ONLYDIR マッチしたディレクトリのみを返す
GLOB_ERR エラー時に停止する(PHP5.1.0以降)

正規表現における|(パイプライン)でのOR検索は、引数にGLOB_BRACEを与えた上で{}(中括弧)で括って行う必要があります。

preg_grepを使った例では、読み込んだファイル名を一旦ユーザインターフェースに出力しユーザに選ばせるという、完全にリモートのWEBサービスを意識した構成でした。それに対してglobの強みが生きてくるのは、ディレクトリに追加されたファイルを強制的に全部読み込んで表示するといった、ユーザの了解を省略したローカルディレクトリベースのアプリケーションなのかもしれません。


PHPのPCRE関数を使ってデイレクトリ内の特定拡張子ファイルのリストを取得する

前回解説した正規表現とPCRE関数を使って、ディレクトリ内の特定の拡張子のファイルのリストを作成してみます。今回のサンプルプログラムではさらに、特定の拡張子のファイルリストを得た後それをhtmlのselect要素に整形することで、ユーザにファイルを選ばせて処理を加えるWEBアプリケーションのインターフェース部分という体裁で書いてみようと思います。

<?php
$dir = "sample";
echo '<form name="" method="" action=""><select name="">';
foreach(preg_grep("/\.jpg$/",scandir($dir)) as $val){
echo '<option value="'.htmlentities($val,ENT_QUOTES,"UTF-8").'">'
.htmlentities($val,ENT_QUOTES,"UTF-8").'</option>';
}
echo '</select></form>';
?>

ディレクトリを検索してその中の拡張子が.jpgのファイルだけ抽出し、セレクトメニューの項目名にしています。ここで使っている関数は、引数2に配列を与えると引数1に与えた正規表現文字列にマッチする要素だけを配列に格納し、返り値として返すpreg_grepという関数です。

preg_grep(引数1,引数2,引数3);
引数1 : 正規表現文字列(前後にスラッシュで囲む)
引数2 : 抽出元の配列
引数3 : 反転フラグ。PREG_GREP_INVERTを与えると、条件にマッチしない要素の配列を返す。省略可。

例では引数2にscandir関数を与えて、ディレクトリ内の全てのファイル/ディレクトリ名を配列にしています。その中からの拡張子.jpgの抽出を、preg_grep関数が担当するようになっています。
この例ではあまり問題になりませんが、preg_grep関数には気をつけなければならない点が一点あります。返り値として返す配列の添字が、引数に与えた元の配列のものを継承するということです。つまり配列の添字が必ずしも連番になっていないので、添字をカウントアップさせて要素をひとつずつ取り出すループとは上手く連携できません。そうした処理と連携する場合は、array_values関数を使って配列の要素に連番の添字をアサインし直しましょう。


PHPで正規表現による文字列のパターンマッチングを行う

文字列の中の特定のパターンを検索する方法として、正規表現というものがあります。以前、.htaccessでディレクトリ内の特定文字列を含むファイルへのアクセスを禁止する方法について書いたエントリの中で少し触れたのですが、今回は書式のおさらいと、PHPでの対応する関数の紹介を行います。

まず正規表現の書式ですが、以前紹介したエスケープ(\または¥)、行頭(^)、行末($)、または(|)の他にもいくつか記号があるので、一覧表にしてみます。

記号 意味 使用例 マッチするテキスト
.(ピリオド) 任意の一文字(ワイルドカード) te.t text,tent,te!t
*(アスタリスク) 直前の文字の0回以上の繰り返し te.*t text,texxxt,tet
+(プラス) 直前の文字の1回以上の繰り返し te.+t text,texxxt
?(クエスチョンマーク) 直前の文字が0または1回登場 te.?t text,tet
¥(円マーク) 特殊文字のエスケープ(windows) te¥.¥?t te.?t
\(バックスラッシュ) 特殊文字のエスケープ(windows以外) te\.\?t te.?t
^(カレット) 行頭 ^\.ht .htaccess,.htpasswd
$(ドル) 行末 nt$ tent,plant
[](角括弧) 括弧内に現れる文字のどれか te[xyz]t text,tezt
-(ハイフン)を使った応用編 te[a-z]t tebt,tewt(aからzまで可)
-(ハイフン)を使った応用編 te[1-9]t te3t,te8t(1から9まで可)
^(カレット)は角括弧中で否定の意 te[^nx]t test(text,tentはダメ)
()(丸括弧) グルーピング (te)*xt xt,text,tetext
|(パイプライン) または ([a-z]|[1-9])* aaa,a,9999

PHPで正規表現によるマッチングを行うには、PCRE関数というPerlでの正規表現に準拠した関数群を使います。preg_という接頭辞がついたこの関数群に正規表現のパターンを与える時は、パターン文字列の前後をスラッシュで囲むという約束事があります。基本的なpreg_match関数で例を見てみましょう。

<?php
$teststring = "Hello!";
preg_match("/He[a-z]+/",$teststring);
?>

引数1にパターン文字列、引数2に検索対象を与えています。引数3、4、5もあるのですが、省略可です。 パターン文字列にマッチしたものがあると、preg_match関数は返り値として1を返します。ちなみに返り値として検索がマッチした回数を返してくれる、preg_match_allという関数もあります。
その他、検索置換機能を備えたpreg_replaceや、配列を精査してくれるpreg_grepという関数もありますので、それらの活用例もいずれエントリでアップできればと思っています。


サイトC:000webhostで頻発するwordpressアップデートエラーを回避する

このサイトで契約しているサーバ000webhostですが、無料であることに加え、MySQLのデータベースを2つ使える、設定パネルとしてcPanelの簡易版が使える、広告が入らない、商用可などのメリットがあり、他と比べてもかなり条件の良いサーバであると個人的に思っています。特にMySQLデータベースが2つまで使えるということは、データベースをまるまる1つ占有してしまうwordpressなどのCMSを気兼ねなく導入できるということで、CMSの実験用として契約するユーザも多数存在するのではないかと予想できます。

一見するとCMSとの相性が良さそうに見えるこのレンタルサーバでは、しかしCMS自体の機能を使ったアップデートやプラグインの導入などの際に、エラーが発生してしまうということが多々あります。加えて、ユーザのアップロードが成功せず何回もトライを続けていると、負荷の低減のためかあるいは不正使用と誤認してなのか判りませんが、当該IPアドレスでのアクセスをしばらく禁止されてしまいます。それにより総合的なユーザエクスペリエンスが最低となり、実験用に契約した場合でも、「このサーバは使えない」という結論に繋がってしまう可能性があります。
そこで、そもそもこういった負の連鎖の原因となるアップロード失敗の原因を突き止め、問題を回避する方法を考えましょう。
結論から言いますと、アップデート時のエラーが頻発するのはサーバ側でPHPプログラムの動作を制限して軽い処理しかできないようにしているためで、000webhostのように.htaccessが使える場合、あるいは他の安サーバでもphp.iniが使える場合、それらの設定を変更することでエラー回避の道が開ける場合もあるというのは知っておいて損のない知識です。具体的に000webhostの場合で見てみましょう。

まずはphpinfo関数でphpの設定を調べて下さい。エラーに関係する項目のみ挙げますが、000webhostの場合デフォルトでmax_execution_timeが10、memory_limitが64M、post_max_sizeが2M、upload_max_filesizeが2Mとなっています。それぞれPHPスクリプトがタイムアウトになるまでの秒数、確保するメモリ容量、POSTで渡せる最大ファイルサイズ、アップロードできる最大ファイルサイズを表しています。
参考までに、サイトAのために契約しているWebhostingPadではこの値が30、128M、8M、2Mになっています。つまり000webhostではこれらの値を厳し目に設定することで、無料ユーザを総合した負荷を抑えるようにしているというわけのようです。
これらの変更を、ユーザのルートディレクトリに置く.htaccessで行いましょう。具体的には、max_execution_timeを少し長めの180秒程度にする、postやuploadのmaxサイズをmemoryリミットの制限内で上げるなどです。.htaccessまたはphp.iniでどのように書けばよいかは、少し前に上げたエントリ(php.ini.htaccess)を参考にして下さい。あまり詳しく言及すると000webhostの勘気に触れるのではないかという個人的な危惧があります(笑)

少しの欠点がありますが、対処を覚えれば便利なサーバーですね。いちユーザの意見としてポジティブに評価しておきましょう。

(2012.6追記:勝手にページを非公開にされ、コンテンツの返還に有料契約を要求された事件があり、現在このサーバは他人にお薦めしません。少し詳しい経緯などはこちら