PHP
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-''PHP'' = ''PHP: Hypertext Preprocessor''お気楽スクリプ...
#contents
*記事一覧 [#jca957a3]
#ls2(PHP)
*メインサイト [#meff017c]
-[[PHP Main Site:http://jp2.php.net/]]
-[[日本PHPユーザー会:http://www.php.gr.jp]]
//Japn PHP User Group
*セキュリティについて [#m1147fda]
http://www.asahi-net.or.jp/%7Ewv7y-kmr/memo/php_security....
なんか上読んでると穴だらけで実運用したくない気がする。
*インストール [#c4c528cb]
-Linuxは[[UNIX/ServerSoft/Apache]]の項目を参照。Windowsで...
-php4apache.dllはphp4ts.dllに依存している
エラーメッセージはphp4apache.dllのモジュールが見つかりま...
-php.iniの場所を指定する。明白にするためにこちらがお勧め
PHPIniDir "C:/php"
**PHP7 on centos7 [#hf7dc483]
***サーバー側インストールは問題無し [#u0abb22e]
remiレポジトリからインストール
yum install http://rpms.famillecollet.com/enterprise/rem...
yum remove php php-pdo php-mbstring php-pgsql php-gd
yum install --enablerepo=remi,remi-php70 php php-devel p...
***ミドルウェアチェック [#n38c167e]
さすがに7.3はcakephpがだめだった。7.2でもfile_get_htmlが...
-wordpress OK
-cakephp 7.3rc3だとだめ、7.2はOK
-pukiwiki(1.5.1へアップグレード必要) OK
-自作ツール OK
*開発環境 [#k24c1e96]
昔はテキストエディタだけだったが、今やeclipseなどが利用で...
*Tips [#i0e871a4]
**print_rの内容を画面に出力せず変数に格納する。 [#k832099d]
ob_start();
//ここでprint_rやvar_dumpしても画面に出力されずにバッフ...
print_r($_SERVER);
//バッファ取得
$tmp = ob_get_contents();
//バッファクリアしてバッファリングも終わり
ob_end_clean();
-つーかvar_exportつかえば?
$str = var_export($hogehoge, $true);
$handle = fopen(a.txt, "w");
fwrite($handle, $str);
fclose($handle);
**一行完結Tips [#n6f37cdc]
|変数の型を取得|gettype($var)|
|クラス名を取得|get_class($var)|
| 配列の要素数取得 | count() or sizeof()|
| バージョンによる変数名の違い | $_GETが4.2以降。$HTTP_GE...
|エラーレベルの設定|error_reporting(E_ALL)|
| デバック手法1 | phpinfo()でHTTPリクエス...
| デバック手法2 | print_r(配列)で配列内全...
| 自分自身のパス名取得 | $_SERVER["PHP_SELF"]|
| 定数定義 | define(定数名,内容)|
|定数一覧取得|print_r(get_defined_constants());|
|include,requireされているファイル一覧表示|get_included_f...
| 文字コード変換 | Shift_JISの入力に対して...
|コマンドラインから利用|php ファイル名|
|コマンドラインから直接実行| php -r 'echo "HelloWorld\n";'|
|エラーメッセージの抑制|@fopenなどと実行するとエラーメッ...
|インクルードパスの変更|set_include_path("../lib");|
|環境変数の設定|putenv("NLS_LANG=Japanese_Japan.JA16EUC");|
|日付の妥当性チェック|checkdate($month,$day,$year)|
**出力にSJISを利用する [#sa3c6410]
基本PHPはソースEUCかつ出力もEUCで利用するのが一番トラブル...
下記の手順でやれば文字化けもない
+ソースはEUCにする。内部処理はすべてEUCで行う。
+リクエストパラメータ取得の時にSJIS→EUC変換をする。
+出力のエンコーディングをSJISにする
php.iniで設定するのはお勧めできないのでスクリプト単位で設...
ini_set('mbstring.http_output','SJIS');
ini_set('mbstring.http_input','SJIS');
ini_set('output_buffering','On');
ini_set('output_handler','mb_output_handler');
参考サイト
http://www.hizlab.net/app/phppg.html
**エラー表示をOn/Off [#h6fcf483]
本番環境などではOffになっていてその場合はエラーがまったく...
display_errors = On
*文法 [#h0a41784]
**可変変数 [#s9a64d4c]
$a = "test";
$b = "a";
$c = $$b;
-$cは$aと同一
**ポインタ変数 [#u8cf200a]
$a = "before";
$b = &$a;
$b = "after";
$bを通して$aの内容を変更できる。要は参照渡し
*[[PEAR>PHP/PEAR]] [#ye596795]
-共通ライブラリインストールせずに使えるとの触れ込み。パッ...
*PECL [#p0fa9478]
拡張ライブラリでC言語でコンパイルされているので早い。
*php.iniについて [#z1b76968]
-パッケージインストールの場合/etc/php.iniにおいてある事が...
*ハマリポイント [#yd50159c]
**一見するとエラーないのにパースエラー [#z07b565a]
全角スペースはいってませんか?たまに意図せず紛れ込んで頭...
**画面が真白 [#e88bd9c7]
基本的に上記エラー表示をonにすればよい
**windows+Apache2の時のreqiure_onceの挙動 [#q7cc37e8]
requeire_onceは一度だけ読込む命令だが、同じファイルを相対...
**sessionにオブジェクトを格納するときの注意点 [#d2e41d57]
セッションに格納したオブジェクトを取り出すところでもrequi...
**Cannot modify header information - headers already sent...
上記エラーはヘッダー情報を操作した後にechoやprintなどの画...
*サンプルプログラム [#fc02aa50]
**メール送信サンプル [#q2068a27]
<?php
mb_language("Ja");
$headers = "From: xxxxx@nifty.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain;charset=ISO...
$to = 'takeru.fujii@infinium.jp';
$subject = mb_convert_encoding('日本語テスト','is...
$body = mb_convert_encoding('はるのうーたー','...
$result = mb_send_mail($to,$subject,$body,$header...
if (!$result) {
echo "mail send failure!";
} else {
echo "mail send to $to";
}
?>
*出力エンコーディングについて [#f678de18]
-HTMLのMETAタグではなく、レスポンスに含まれるContentType...
**一括で指定する。ただし下記のソースコード指定で上書き可...
php.iniのdefault_charset を変更してapache再起動
**ソースコードで指定する [#l4027238]
今までEUC-JPがデフォルトのOSでやってきたのであまりはまる...
header("Content-type: text/html; charset=EUC-JP");
#counter
終了行:
-''PHP'' = ''PHP: Hypertext Preprocessor''お気楽スクリプ...
#contents
*記事一覧 [#jca957a3]
#ls2(PHP)
*メインサイト [#meff017c]
-[[PHP Main Site:http://jp2.php.net/]]
-[[日本PHPユーザー会:http://www.php.gr.jp]]
//Japn PHP User Group
*セキュリティについて [#m1147fda]
http://www.asahi-net.or.jp/%7Ewv7y-kmr/memo/php_security....
なんか上読んでると穴だらけで実運用したくない気がする。
*インストール [#c4c528cb]
-Linuxは[[UNIX/ServerSoft/Apache]]の項目を参照。Windowsで...
-php4apache.dllはphp4ts.dllに依存している
エラーメッセージはphp4apache.dllのモジュールが見つかりま...
-php.iniの場所を指定する。明白にするためにこちらがお勧め
PHPIniDir "C:/php"
**PHP7 on centos7 [#hf7dc483]
***サーバー側インストールは問題無し [#u0abb22e]
remiレポジトリからインストール
yum install http://rpms.famillecollet.com/enterprise/rem...
yum remove php php-pdo php-mbstring php-pgsql php-gd
yum install --enablerepo=remi,remi-php70 php php-devel p...
***ミドルウェアチェック [#n38c167e]
さすがに7.3はcakephpがだめだった。7.2でもfile_get_htmlが...
-wordpress OK
-cakephp 7.3rc3だとだめ、7.2はOK
-pukiwiki(1.5.1へアップグレード必要) OK
-自作ツール OK
*開発環境 [#k24c1e96]
昔はテキストエディタだけだったが、今やeclipseなどが利用で...
*Tips [#i0e871a4]
**print_rの内容を画面に出力せず変数に格納する。 [#k832099d]
ob_start();
//ここでprint_rやvar_dumpしても画面に出力されずにバッフ...
print_r($_SERVER);
//バッファ取得
$tmp = ob_get_contents();
//バッファクリアしてバッファリングも終わり
ob_end_clean();
-つーかvar_exportつかえば?
$str = var_export($hogehoge, $true);
$handle = fopen(a.txt, "w");
fwrite($handle, $str);
fclose($handle);
**一行完結Tips [#n6f37cdc]
|変数の型を取得|gettype($var)|
|クラス名を取得|get_class($var)|
| 配列の要素数取得 | count() or sizeof()|
| バージョンによる変数名の違い | $_GETが4.2以降。$HTTP_GE...
|エラーレベルの設定|error_reporting(E_ALL)|
| デバック手法1 | phpinfo()でHTTPリクエス...
| デバック手法2 | print_r(配列)で配列内全...
| 自分自身のパス名取得 | $_SERVER["PHP_SELF"]|
| 定数定義 | define(定数名,内容)|
|定数一覧取得|print_r(get_defined_constants());|
|include,requireされているファイル一覧表示|get_included_f...
| 文字コード変換 | Shift_JISの入力に対して...
|コマンドラインから利用|php ファイル名|
|コマンドラインから直接実行| php -r 'echo "HelloWorld\n";'|
|エラーメッセージの抑制|@fopenなどと実行するとエラーメッ...
|インクルードパスの変更|set_include_path("../lib");|
|環境変数の設定|putenv("NLS_LANG=Japanese_Japan.JA16EUC");|
|日付の妥当性チェック|checkdate($month,$day,$year)|
**出力にSJISを利用する [#sa3c6410]
基本PHPはソースEUCかつ出力もEUCで利用するのが一番トラブル...
下記の手順でやれば文字化けもない
+ソースはEUCにする。内部処理はすべてEUCで行う。
+リクエストパラメータ取得の時にSJIS→EUC変換をする。
+出力のエンコーディングをSJISにする
php.iniで設定するのはお勧めできないのでスクリプト単位で設...
ini_set('mbstring.http_output','SJIS');
ini_set('mbstring.http_input','SJIS');
ini_set('output_buffering','On');
ini_set('output_handler','mb_output_handler');
参考サイト
http://www.hizlab.net/app/phppg.html
**エラー表示をOn/Off [#h6fcf483]
本番環境などではOffになっていてその場合はエラーがまったく...
display_errors = On
*文法 [#h0a41784]
**可変変数 [#s9a64d4c]
$a = "test";
$b = "a";
$c = $$b;
-$cは$aと同一
**ポインタ変数 [#u8cf200a]
$a = "before";
$b = &$a;
$b = "after";
$bを通して$aの内容を変更できる。要は参照渡し
*[[PEAR>PHP/PEAR]] [#ye596795]
-共通ライブラリインストールせずに使えるとの触れ込み。パッ...
*PECL [#p0fa9478]
拡張ライブラリでC言語でコンパイルされているので早い。
*php.iniについて [#z1b76968]
-パッケージインストールの場合/etc/php.iniにおいてある事が...
*ハマリポイント [#yd50159c]
**一見するとエラーないのにパースエラー [#z07b565a]
全角スペースはいってませんか?たまに意図せず紛れ込んで頭...
**画面が真白 [#e88bd9c7]
基本的に上記エラー表示をonにすればよい
**windows+Apache2の時のreqiure_onceの挙動 [#q7cc37e8]
requeire_onceは一度だけ読込む命令だが、同じファイルを相対...
**sessionにオブジェクトを格納するときの注意点 [#d2e41d57]
セッションに格納したオブジェクトを取り出すところでもrequi...
**Cannot modify header information - headers already sent...
上記エラーはヘッダー情報を操作した後にechoやprintなどの画...
*サンプルプログラム [#fc02aa50]
**メール送信サンプル [#q2068a27]
<?php
mb_language("Ja");
$headers = "From: xxxxx@nifty.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain;charset=ISO...
$to = 'takeru.fujii@infinium.jp';
$subject = mb_convert_encoding('日本語テスト','is...
$body = mb_convert_encoding('はるのうーたー','...
$result = mb_send_mail($to,$subject,$body,$header...
if (!$result) {
echo "mail send failure!";
} else {
echo "mail send to $to";
}
?>
*出力エンコーディングについて [#f678de18]
-HTMLのMETAタグではなく、レスポンスに含まれるContentType...
**一括で指定する。ただし下記のソースコード指定で上書き可...
php.iniのdefault_charset を変更してapache再起動
**ソースコードで指定する [#l4027238]
今までEUC-JPがデフォルトのOSでやってきたのであまりはまる...
header("Content-type: text/html; charset=EUC-JP");
#counter
ページ名: