• ベストアンサー

セッションファイルのパーミッション変更

いつもお世話になっております。 PHP+Vine Linuxでプログラミングをしている大学生です。 よく空メール送信→返信→登録というサイトを作りたいのですが 例えばtouroku@hoge.comに空メール送信 メール受信→.forward→PHP(CLI)に渡して コマンドラインでセッションファイルを作成しましたが・・・ ブラウザ経由だと"apache"の権限でファイル作成&読み込みですが .forward経由だとメールのアカウント(touroku)のユーザーの所有権+読み込み権でセッションファイルが作成されてしまい。 "apache"の権限で読み込むことができません。 したがってセッションが共有できなくなってしまいます。 (;;) 対策としてsystem関数とかつかってセッションのディレクトリ以下のファイルをそのつど"apache"に変更するという方法は思いつきましたが パスとかソースファイルに書くことになりますし、ルート権限に毎回移行しないといけないのはものすごく効率が悪いと思います。 .forwardでのセッションにアドレス保存する際に 所有者を"apache"にしてセッションファイルつくる スマートな方法はないでしょうか? よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

セッションファイルの所有者をapacheにするよりは chmod a+r にあたることをした方が楽そうな気がします。 PHPが作るファイルにumaskで設定した効果が有効かどうか分かりませんが、 umaskコマンドを発行してみたらどうでしょう。 また、別の方法ですが、 sudoを使って、 touroku ユーザに対し作成したphpファイルを パスワードなしでapacheユーザで実行する権限をあたえる というアイデアはどうでしょうか

widoww
質問者

お礼

ご返答ありがとうございました^^ 回答者様の書き込みを参考にして Linuxの勉強早速がんばってみます。 ありがとうございました。

関連するQ&A

  • セッションファイルの権限

    PHP5にてセッションファイルをserialize()した場合の質問です。 この関数でできるファイルはapacheのread/write権限しかついていないのですが、設定か何かでread権限を拡張することはできないでしょうか? (php.iniには該当するような設定はありませんでした) 自分ではサーバのroot権限を持っていないため、セッションファイルの中身を確認してデバックができなくて困っております。 ご存知の方、ご教授ください。

    • 締切済み
    • PHP
  • php実行権限以外でのディレクトリ(ファイル)作成方法

    webからphpを起動し、ディレクトリを作る場合、 phpが実行された権限ではない権限で作ることはできますか? 所有者がapacheとなるディレクトリを作りたいのです。 試してみたこと。 ・mkdirでディレクトリ作成後、chownで所有者変更が出来ればいいのですが、 root権限で動いているわけではないので無理でした。 ・シェルを作って、シェルの所有者をapacheにしてphpからコマンドラインで シェルを呼び出してみましたが所有者apacheで作られません。

    • ベストアンサー
    • PHP
  • ファイルのアップロードに関して

    phpでファイルのアップロードをするプログラムを作成しています。 当初 move_uploaded_file を使い意外と簡単に作れたのですが、ファイルの所有者がApacheになってしまいます。 何故、ファイルの所有者が Apache でまずいのかというと、ユーザーの使用域を quota で制限しているのですが、所有者がApacheになっていると、制限ができません。 (ユーザーのエリアにアップロードしても、ユーザーが Apache になっていると、使用済み容量が増えません。) そこで、アップロード後 chown で所有者を変更しようと思いましたが、ルート権限でないと変更できないようで、うまく行きませんでした。 マニュアルを見ていると ftp_connect で接続し ftp_login でログインしてから ftp_put で転送してやれば所有者をログイン時のユーザーにできそうと思い作成したのですが、 <FORM method="post" action="hoge.php" enctype="multipart/form-data"> : : <input name="userfile" size="60" type="file"> では、hoge.phpに転送元のファイル名がうまく引き渡されません。 よい知恵はないでしょうか。 尚、サーバー側の環境は Fedora 1 Apache/2.0.48 PHP Version 4.3.4 です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • セッションが引き継げません

    PHP5.3 + Apache2.2 Windowsです。 IE7でページ遷移を行うと、セッションが引き継げず、新しいセッションが作成されてしまいます。(Chromeでは引き継げます) セッション保存フォルダに新しいセッションファイルが生成されていました。 以下ソースコードです。 $_SESSION['hogehoge'] = 'xxxx'; header("Location:sapmle.php"); sapmle.phpで$_SESSION['hogehoge']を参照すると、エラーになる。 エラー内容:Notice Undefined Index 'hogehoge' また、<a href="sample.php">次のページ</a> と記述したリンクをクリックしても同じエラーになります。 php.ini の use_trans_sid を Onにすると、エラーは出ません。 use_only_cookies を OnしてもOffにしてもエラーは出ました。 use_trans_sid が Offでも header("Location:sapmle.php?" . session_name() . "=" . session_id()); と書くとエラーは出ません。 エラーが出なくなれば良いので、use_trans_sid を Onにしたり、URLにセッションIDを付与すれば良いのかもしれませんが、 これらの処置はセキュリティ上良くないと聞いたことがあるので、どうするのがいいのかわかりません。 わかる人教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • xreaでファイル作成ができない。パーミッションが不足しているとのこと

    xreaで以下のようなコードを書いたPHPファイルを実行しました。 if (($mixSource = fopen("../mail".$MailID.".htm","w")) === FALSE) { print("ファイルオープンでエラーが発生しました。");} fwrite($mixSource,$str); fclose($mixSource); そうしましたところ、権限が足りないというエラーが発生しました。 パーミッションを0777に設定しても、しばらくすると0705に戻っているため問い合わせると、0777は許可していないとのこと。 調査した結果、PHPをCGIとして動作させると良いらしいので、 AddHandler application/x-httpd-phpcgi .php と書いた「.htaccess」ファイルをアップロードしました。 そうするとファイル書き込みは正常に動作するようなのですが、 今度は session_start(); を実行すると Warning: session_start() [function.session-start]: open(/tmp/sess_igp2b7reu7aold9btdspuc2d57, O_RDWR) failed: Permission denied (13) というエラーとなります。 単純にxreaで、ファイル作成を行いたいだけなのですが、 方法をご存知ありませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • sessionの生存時間

    こんにちは 最近PHPを始めました。 php4のsessionについて伺いたいのですが。 session_*関数で、/tmpに作られる、sess+sessionID と言うファイルは、いつまで有効なのでしょう? また、cookieにように生存期間を指定してやることは 出来るのでしょうか? よろしくお願いいたします。 #環境は、Linux & php4.01p12 & apache1.3.20です。

    • 締切済み
    • PHP
  • sessionの値が処理できない。

    次のようなセッション管理のコードですが、値($mydata)が保存されません。 ですので取得もできません。 /tmp 内には sess_ca0c8xxxxxx という風な ファイルが作成され アンダスコア以降はecho "セッションIDは{$id}です\n"; で表示される $idに一致しています。ファイルの中身は、mydata|N; という感じです。 下のPHPの動作結果はいつも"ありません。"となりますが、これは どこがおかしいのでしょうか? phpの設定なのかapacheの設定なのか・・・ OSはFedora Core2 Apacheは2.0 です。 よろしくお願いします。 '-------SESSION PUT------------------------------------------- <?php session_start(); session_register("mydata"); $mydata = 120; ?> <a href="sessionget.php">sessionget.phpにジャンプ</a> '-------SESSION GET------------------------------------------- <?php session_start(); echo "セッション内のデータは"; if ( isset($mydata) ){ echo "{$mydata}です。<br>\n"; } else { echo "ありません<br>\n"; } $id = session_id(); echo "セッションIDは{$id}です\n"; ?>

    • ベストアンサー
    • PHP
  • session_start出来ません。

    FreeBSD 4.11 Apache 1.3.33 PHP 4.3.11 の組合せでWebサーバをセットアップし、phpファイルにアクセスしたところ Fatal error: Call to undefined function: session_start() in /hogehoge/test.php on line 3 となってしまいます。 session.save_pathにはパーミッションを777にしていますが、session_startが出来ません。 どのように対応したらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Sessionの上限について

    PHPでセッション情報をファイル保持にした場合、1セッションあたりのデータ量に上限はあるのでしょうか? 当然、大き過ぎても、リクエストタイムアウトなどして使い物にならないのかもしれませが、 基本的に、OSが扱う事のできるテキストファイルサイズとニアリーイコールと捉えても良いのでしょうか? RHEL4 Apache2.0 PHP4.4.7 よろしくお願い致します。

    • 締切済み
    • PHP
  • PHP 不要なセッションファイルの対応方法について

    セッションファイルの管理方法について、どなたかご教授願います。 現在セッションファイルを生成し、ログアウト処理時に、 session_destroy()関数を使用しています。 通常にログアウト処理が行われれば、良いのですがブラウザ事態を 閉じた場合、セッションファイルは残ったままになります。 PHPやApacheの設定などで簡単に管理できる方法は無いものでしょうか? なるべく、バッチやモジュールを追加しない形で進めていきたいと思っています。 以上です。

    • 締切済み
    • PHP

専門家に質問してみよう