こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

テキストボックスの値をファイルに保存する方法

テキストボックスから入力された文字を取得し、ファイルに保存する方法について、以下のように処理を行った結果、ローカル環境では、動くのですが、レンタルサーバー(スマイルサーバー)上で動きません。レンタルサーバー上でも同様に動くようにするには、どうしたらいいか教えてください。宜しくお願いします。

HTMLテキストBOX
<form action="/search.php" method="post">
<INPUTtype="text"size="36"name="kensaku"></FONT><BR>
<INPUT type="submit" value="データの検索">

serch.phpの書き出し部分のソース
$kensaku=$_POST["kensaku"];
$fd = fopen("/users.txt","a");
$str = " $kensaku";
fputs( $fd, $str );
fclose( $fd );

動いた環境のPHPバージョンは5.2.4
レンタルサーバーのPHPバージョンは、わかりません!

投稿日時 - 2009-03-08 18:05:54

QNo.4779422

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

mpx

>> ●user.textのパーミッションは644→766にしてみましたが、改善
>> されませんでした。パーミッションはいくつにするのがいいのか
>> 教えてください
>> ●サーバーのルートにおけないのですか?素人でもうしわけあり
>> ません!ではサーバーのどこに配置するかといったことは、サー
>> バーの会社に聞かないと解決しないのでしょうか?

パーミッションはWEBサーバーが誰の権限でPHPを実行しているか、
書き込むファイルおよびそのファイルのフォルダーのオーナーを
誰にしているか不明なので一般論しか言えませんが、
セキュリティーを考えずに甘い設定をするなら以下に変更してみてください
1. "user.txt"をルート以外の任意のフォルダーに配置する。
2.そのフォルダーとuser.txtのパーミッションを777にする

それでも書込みできないなら、他のプログラムにミスが有る可能性があります
もしもそれで動いたら、フォルダーを757 ファイルを666等
徐々に制限かけるように変更してみる。

投稿日時 - 2009-03-09 19:18:46

補足

users.textを任意のフォルダーの中にいれパーミッションをどちらも777でやってみたのですが、かきこみできませんでした。(任意のフォルダーを作る位置はルートの中にしかできなかったのですが・・・)
ローカルの環境では、同じコードで動いていたんで、WEB上でも動くものと簡単に考えておりましたが、難しいことが判りました。自分のミスをチェックし、レンタルサーバーに問い合わせしてみます。

投稿日時 - 2009-03-09 23:45:40

お礼

MPXさん何回も親身になって回答を頂きありがとうございました。結局のところ、ファイルのPATH指定が/users.txtではなく./users.txtであることが判明しました。初歩的なミスで申し訳ありません。修正することで、おかげさまで無事目的を達成することができました。ありがとうございました。

投稿日時 - 2009-03-11 18:24:33

ANo.1

mpx

>> レンタルサーバー(スマイルサーバー)上で動きません。

動かないとはどのような状態かを公開しておくと適切な回答が
得られると思います。
例えば
・「データ検索」ボタンをクリックしても画面が出てこない
 → /serch.php のパスが間違っている "/"はドキュメントルートを指します
・ファイルオープンのエラー表示がでる。
 または異なる場所にファイルが作成される。
 データが書き込まれない
 → /users.txt のパスかパーミッションが間違っている。
  上記のファイルはドキュメントルートではなく
  サーバーのルートディレクトリ上に有ることになりますが、
  ルートにこのファイルを配置できるとは思えません
・文字化けが発生する
 → 文字コード処理に間違いがある。サーバーのデフォルト文字コードと不一致など

などなど、 “動かない”だけではいろいろなことが考えられるので特定は困難かと・・

投稿日時 - 2009-03-08 20:12:00

補足

MPXさん早速回答いただきましてありがとうございます。またPHP初心者な者で質問の仕方がまとを得ておらず申し訳ありません。いままでの状況を書きますので、宜しくアドバイスお願いいたします。

●フォームのテキストボックスから入力したデーターは、$strの中に
入っています。(上に書いたserch.phpの最後の行の下で echo $str;
で確認したところ、文字列は入力されている)

●PHPは、特にエラーメッセージなどはでません

●users.txtの中に文字列が書き込まれません。(白紙の状態です)

●user.textのパーミッションは644→766にしてみましたが、改善されませんでした。パーミッションはいくつにするのがいいのか教えてください

>サーバーのルートディレクトリ上に有ることになりますが、
>ルートにこのファイルを配置できるとは思えません
●サーバーのルートにおけないのですか?素人でもうしわけありません!ではサーバーのどこに配置するかといったことは、サーバーの会社に聞かないと解決しないのでしょうか?一般的な方法で、改善策がある場合はご教授くださいお願いいたします。

投稿日時 - 2009-03-09 18:11:46

あなたにオススメの質問