- 締切済み
テキストボックスの値をファイルに保存する方法
テキストボックスから入力された文字を取得し、ファイルに保存する方法について、以下のように処理を行った結果、ローカル環境では、動くのですが、レンタルサーバー(スマイルサーバー)上で動きません。レンタルサーバー上でも同様に動くようにするには、どうしたらいいか教えてください。宜しくお願いします。 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バージョンは、わかりません!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mpx
- ベストアンサー率71% (149/209)
>> ●user.textのパーミッションは644→766にしてみましたが、改善 >> されませんでした。パーミッションはいくつにするのがいいのか >> 教えてください >> ●サーバーのルートにおけないのですか?素人でもうしわけあり >> ません!ではサーバーのどこに配置するかといったことは、サー >> バーの会社に聞かないと解決しないのでしょうか? パーミッションはWEBサーバーが誰の権限でPHPを実行しているか、 書き込むファイルおよびそのファイルのフォルダーのオーナーを 誰にしているか不明なので一般論しか言えませんが、 セキュリティーを考えずに甘い設定をするなら以下に変更してみてください 1. "user.txt"をルート以外の任意のフォルダーに配置する。 2.そのフォルダーとuser.txtのパーミッションを777にする それでも書込みできないなら、他のプログラムにミスが有る可能性があります もしもそれで動いたら、フォルダーを757 ファイルを666等 徐々に制限かけるように変更してみる。
- mpx
- ベストアンサー率71% (149/209)
>> レンタルサーバー(スマイルサーバー)上で動きません。 動かないとはどのような状態かを公開しておくと適切な回答が 得られると思います。 例えば ・「データ検索」ボタンをクリックしても画面が出てこない → /serch.php のパスが間違っている "/"はドキュメントルートを指します ・ファイルオープンのエラー表示がでる。 または異なる場所にファイルが作成される。 データが書き込まれない → /users.txt のパスかパーミッションが間違っている。 上記のファイルはドキュメントルートではなく サーバーのルートディレクトリ上に有ることになりますが、 ルートにこのファイルを配置できるとは思えません ・文字化けが発生する → 文字コード処理に間違いがある。サーバーのデフォルト文字コードと不一致など などなど、 “動かない”だけではいろいろなことが考えられるので特定は困難かと・・
補足
MPXさん早速回答いただきましてありがとうございます。またPHP初心者な者で質問の仕方がまとを得ておらず申し訳ありません。いままでの状況を書きますので、宜しくアドバイスお願いいたします。 ●フォームのテキストボックスから入力したデーターは、$strの中に 入っています。(上に書いたserch.phpの最後の行の下で echo $str; で確認したところ、文字列は入力されている) ●PHPは、特にエラーメッセージなどはでません ●users.txtの中に文字列が書き込まれません。(白紙の状態です) ●user.textのパーミッションは644→766にしてみましたが、改善されませんでした。パーミッションはいくつにするのがいいのか教えてください >サーバーのルートディレクトリ上に有ることになりますが、 >ルートにこのファイルを配置できるとは思えません ●サーバーのルートにおけないのですか?素人でもうしわけありません!ではサーバーのどこに配置するかといったことは、サーバーの会社に聞かないと解決しないのでしょうか?一般的な方法で、改善策がある場合はご教授くださいお願いいたします。
お礼
MPXさん何回も親身になって回答を頂きありがとうございました。結局のところ、ファイルのPATH指定が/users.txtではなく./users.txtであることが判明しました。初歩的なミスで申し訳ありません。修正することで、おかげさまで無事目的を達成することができました。ありがとうございました。
補足
users.textを任意のフォルダーの中にいれパーミッションをどちらも777でやってみたのですが、かきこみできませんでした。(任意のフォルダーを作る位置はルートの中にしかできなかったのですが・・・) ローカルの環境では、同じコードで動いていたんで、WEB上でも動くものと簡単に考えておりましたが、難しいことが判りました。自分のミスをチェックし、レンタルサーバーに問い合わせしてみます。