ファイルを読み込む/ファイルに書き込む
ファイルを読み込む
<?php
// 対象のファイル・URL
$target="test.txt";
// $target="http://www.example.com/test.txt";
// 対象がファイルなら
// ファイルの存在を確認
if(!is_file($target) && !is_link($target)){
echo "指定されたファイルがありません。";
exit;
}
// 対象がURLなら
// URLを確認
//if (!preg_match('/^(https?|ftp):\/\/[-_\.!~*\'()a-z0-9;\/?:\@&=+\$,%#]+$/i',
// $target)) {
// echo "URLが不正です。";
// exit;
//}
// ファイルハンドルを読み込みモードで開く
if (!($fp = @fopen($target,"r"))) {
echo "ファイルの取得に失敗しました。";
exit;
}
$data="";
//ファイルを1行づつ取得
while (!feof($fp)) {
$data.=fgets($fp, 4096);
}
echo $data;
// ファイルハンドルを閉じる
fclose($fp);
?>
標準関数では
<?php $data = file_get_contents($target); ?>
ファイルに書き込む
Linuxサーバなどでは、webアクセスされた時のファイルの書き込みユーザはapacheなどになり、FTP等のユーザと違う場合があります。
このファイルはファイルの削除変更などがFTP経由でできなくなります。
このためファイルを書き込んだら、パーミッションを777などに変更しておいたほうがいいです。
[参考記事] ディレクトリ内のファイルのパーミッションを一括で変更する
<?php
// 対象のファイル
$target="test.txt";
// ファイルが存在する場合
if (file_exists($target)) {
if (is_dir($target)) {
echo "同名のフォルダが存在します。";
exit;
}
if (!is_writable($target)) {
echo "ファイルの書き込み権限がありません。";
exit;
}
}
// ファイルハンドルを書き込みモードで開く
if (!($fp = @fopen($target,"w"))) {
echo "ファイルの書き込みに失敗しました。";
exit;
}
// 排他ロックを行います
if (!@flock($fp, LOCK_EX)) {
echo "ファイルのロックに失敗しました。";
exit;
}
//ファイルに書き込む
fputs($fp, $data);
// 排他ロックを終了します
if (!@flock($fp, LOCK_UN)) {
echo "ファイルのロック解放に失敗しました。";
exit;
}
// ファイルハンドルを閉じる
fclose($fp);
// パーミッションを変更する
@chmod($target, 0777);
?>
ファイルハンドルのモード一覧
| mode | 説明 |
|---|---|
| r | 読み込みのみ ファイルポインタをファイルの先頭に置きます |
| r+ | 読み込み/書き出し ファイルポインタをファイルの先頭に置きます |
| w | 書き出しのみ ファイルポインタをファイルの先頭に置き、ファイルサイズをゼロにします ファイルが存在しない場合には、 作成を試みます 新規・書き換えに使用します |
| w+ | 読み込み/書き出し ファイルポインタをファイルの先頭に置き、ファイルサイズをゼロにします ファイルが存在しない場合には、作成を試みます 新規・書き換えに使用します |
| a | 書き出し用のみ ファイルポインタをファイルの終端に置きます ファイルが存在しない場合には、作成を試みます 新規・追記に使用します |
| a+ | 読み込み/書き出し ファイルポインタをファイルの終端に置きます ファイルが存在しない場合には、作成を試みます 新規・追記に使用します |
| x | 書き込みのみ ファイルポインタをファイルの先頭に置きます ファイルが既に存在する場合には fopen() は失敗し、 E_WARNING レベルのエラーを発行します ファイルが存在しない場合には新規作成を試みます PHP4.3.2以降でサポートされ、また、 ローカルファイルに対してのみ有効です |
| x+ | 読み込み/書き出し ファイルポインタをファイルの先頭に置きます ファイルが既に存在する場合には fopen() は失敗し、 E_WARNING レベルのエラーを発行します PHP 4.3.2 以降でサポートされ、また、 ローカルファイルに対してのみ有効です |
関連記事
- PHPでwebサーバー(apache/nginx)の実行ユーザー・グループを確認する方法
- リクエストヘッダーやリクエストボディーなどを取得する方法
- 負荷が高いときには503エラーを返す方法
- サイトの更新情報をPINGサーバに送信する方法
- PHPでロードアベレージを表示させる方法
- PHPでTwitterのツイートをする/ツイート一覧を取得する/検索する(API v1.1)
- インクルードパスを設定する方法
- オブジェクト(Object)を配列(Array)に変換する方法
- PHPでgzip圧縮形式(gz圧縮)のファイルを読み書きする方法
- PHPでfacebook投稿時に公開範囲を指定する方法
- PHPで複数の画像をfacebookに投稿する方法
- PHPでfacebookのフィード(ウォール)に投稿する方法
- PHPでのfacebookアプリの認証処理(APIを使うユーザー認証)
- MySQL関数のまとめ
- MySQLサーバに接続できるかどうかを確認する
- ディレクトリ内のファイルのパーミッションを一括で変更する
- POSTでアップロードできるファイルサイズの制限を変更する方法
- 暗号化・複合化を行う ブロック暗号
- date型やdatetime型と年月日時分秒への変換
- 関数・メソッドの存在を調べる方法
- PHPでTwitterのbotを作る方法 ツイートをする/ツイート一覧を取得する(API v1)
- strtotimeの指定
- PHPでHTMLメールを送る方法
- ディレクトリセパレータを短く定義する DIRECTORY_SEPARATOR
- モザイク画像を作る方法
- HTML内のアクセス解析タグを除去する方法
- HTMLのTABLEタグを簡単にCSVファイルに変換する方法
- 画像表示のときに指定サイズにリサイズする(画像の拡大縮小)
- テキストを可逆的な暗号化する Crypt_Blowfish
- PHPでwhois検索をする Net_Whois
- よく使うヘッダー関数のまとめ
- キャリア・世代を判別する
- mb_send_mailでCCやBCCを指定する 表示名を指定する
- より高速に、推測困難な一意なIDを生成する方法
- 画像ファイルを指定容量ぎりぎりに圧縮する
- 指定したHTTPヘッダーが送信済みあるいは送信予定に含まれているか
- DOCUMENT ROOTを得る $_SERVER["DOCUMENT_ROOT"]は使えない!
- マルチバイト文字列(日本語文字)を一文字づつ取り出す
- ファイルを削除する/フォルダを削除する
- ディレクトリ内のファイル一覧を取得する
- quoted-printable文字列の変換
スポンサーリンク





