トップページphp
1001コメント275KB

【PHP】下らねぇ質問はID出して書き込みやがれ 100

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2010/10/27(水) 17:41:33ID:2BwSQxVQ
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 99
http://hibari.2ch.net/test/read.cgi/php/1286938893/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0974nobodyさん2010/11/15(月) 10:07:21ID:???
>>973
htdocsがホームディレクトリだよね?
その直下にtestってフォルダ作ってその中にindex.phpを作成してアクセスしてみ
【htdocs/test/index.php】
<?php
touch("hoge.txt") or die("ファイルが作成できません");

これでtestにhoge.txtが作成されなかった場合testのパーミッションを777にして再度実行してみ
0975nobodyさん2010/11/15(月) 10:10:07ID:???
あとあるとしたらselinux周りかな
とりあえず777で試す方が先だね
0976nobodyさん2010/11/15(月) 11:10:07ID:kwhiKnwN
自分、情けないことにSELinuxは設定が難しすぎて無効にしています

すみません、一般的にこういう場合フォルダはrootで作成すればいいのでしょうか?
自分今までパーミッションの問題を避けて、fooユーザで作成したものをrootに変わり、root権限でhtdocs内に入れていたのですが
fooで作成するとdrwxrwxr-x foo fooとなりますが、rootで作成するとdrwxr-xr-x root rootとなります

で、どちらでもindex.phpにアクセスすると「ファイルが作成できません」と出ました
ただし、chmod -R 777 としたらtestディレクトリ内にhoge.txtが作成されました
と言うことはやはりパーミッションの問題だということなのかもしれません

で、自分の環境で言うとlogディレクトリはdrwxrwxr-x foo fooとなっていますので、httpd.confに記載されている、
セキュリティの為にApache専用に割り当てたユーザhogeでは書込み権限が無いためにエラーになっていたのでしょうか?

皆さんは運用の為にPHPスクリプトを作成した場合、どのようにしてApacheに引き渡しているのでしょうか?
流石にパーミッションを777にはしていないと思いますが
自分のようにApache実行用にhogeユーザを作り、PHPスクリプトをfooユーザで作っている場合はどう運用すればいいのか分からなくなってしまいました
0977nobodyさん2010/11/15(月) 11:25:53ID:???
親ディレクトリを777にするんですが何か?
そうしないとセーフモードで制限される関数が使えないし
0978nobodyさん2010/11/15(月) 11:52:33ID:kwhiKnwN
えっ?
親ディレクトリを777にするとは言うことなのでしょうか?
例えば今回の場合logフォルダを777にするということでしょうか?
その場合、log.phpにフォームがあり、例えブラックリスト法、ホワイトリスト法、htmlspecialcharsとかで様々な対策をしていたとしてもクライアントから実行可能なスクリプトを作成されたりしないのでしょうか?
確かに動的にファイルなどを作る場合はwrite権限が必要でしょうが

自分、Windowsではまぁスクリプトを少々うってきたり、Linuxはそこそこ使いつづけていたのですが、実際にLinuxでPHPってのはやっておらず、パーミッション関係で迷っております
上でのhoge.txtは-rw-r--r-- hoge hogehogeで作成されていました
となると、fooで作成したファイルなどが混在していてもいいのかとか、
ファイル、フォルダ共にどのようにパーミッション設定すればいいのか分からず非常に難しいです

0979nobodyさん2010/11/15(月) 11:56:21ID:???
>>976
その書き方だchownを知らない?
ユーザhogeで書けないと意味が無いので、rootでディレクトリを作ったあとで
chown でhogeユーザに所有者をかえて
chmod で権限を変えれば良い

apache専用ユーザがhoge、グループもhogeだとしたら
自分の場合は、ユーザfooのサブグループにhogeを追加する(usermod -G hoge foo)
そしてファイルやディレクトリの権限は660か770にする。
0980nobodyさん2010/11/15(月) 11:59:28ID:???
あー、ユーザー権限でPHPが動いていないだけな気がする。
hogehoge権限で動いていたら書き込めないのは当たり前。

ディレクトリを777にした時にファイルが出来たらしいけどその所有者誰になってます?。
0981nobodyさん2010/11/15(月) 12:00:01ID:???
>>878
もう少しディレクトとファイルの構成を考えたほうがいい
ログを保存する場所にphpスクリプトがあるというのがそもそもおかしな話
0982nobodyさん2010/11/15(月) 12:19:49ID:kwhiKnwN
>>979
chown -R webuser.webgroup htdocsとかですね?
デフォルトの/usr/local/apache2/内を削除し/var/www/内に移動させるために、他にもmkdir tmp -> chown webuser tmpなどしておりました
確かにそう言われればそうはしていなかったように思います
と言うことはいったんfooで作成したスクリプトをchown hoge.hogehogeで所有者を変えればいいのですね

>ファイルやディレクトリの権限は660か770にする

勉強になりました

>>980
所有者は978で書きました通り-rw-r--r-- hoge hogehogeになっております
やはり権限の問題だと思います
>>979さんのおっしゃられている通りfooで作ったスクリプト群をchownでhogeに変えなかったのがダメだったのかもしれません

>>981
いや、これは自分で作ったスクリプトでは無く、Linuxでの動きを見るために参考書のサンプルを使ったのです
本当は公開フォルダの外に置くべき事は分かっているのですが、サンプルがこうなっていたもので
本当は例えばopen_basedirに/var/www/を設定して、公開フォルダは/var/www/htdocs/で、外部フォルダとして/var/www/tmp/などに入れようとか思っています
09839362010/11/15(月) 12:23:42ID:v7N8eLuf
>>971
え?そんなこと聞いてないですが…
そう思われてるのかな
09849802010/11/15(月) 12:25:56ID:???
>>982
あ、もともとユーザー権限で動かす気ないのか、すまん。

その環境で動かすとgroup hogehogeを利用している全ユーザーに少なくともデータの上書きはされる覚悟が必要だし
PHPファイルにパスワードとか書くと簡単に抜かれるからパーミッションとか気にしても知れてるかもよ。
0985nobodyさん2010/11/15(月) 12:38:46ID:???
>>980
次スレたのむ
0986nobodyさん2010/11/15(月) 12:45:27ID:???
この前、変な奴がわいてたからスレタイと文言を変えようかなw
0987nobodyさん2010/11/15(月) 12:58:39ID:???
いちいち荒さんでさっさと立てろ
0988nobodyさん2010/11/15(月) 12:59:26ID:???
俺が立てる
0989nobodyさん2010/11/15(月) 13:03:31ID:???
責任もてないやつは980踏むんじゃねえksg

http://hibari.2ch.net/test/read.cgi/php/1289793607/
0990nobodyさん2010/11/15(月) 13:09:16ID:???
ところで>>966はサンプルらしいが何の本読んでるのか気になるな
怪しいコード満載そうでwktkするわ
0991nobodyさん2010/11/15(月) 14:03:37ID:kwhiKnwN
>>990
各言語にて書籍を乱発されている方の本ですw
その中のPEAR&ZFのサンプル本です

何故だか最近のPHPの本はWindows環境のXamppでの構築ばかり載っているので、linuxのパーミッションの事とか載ってないように思います
更に本番を想定したLAMP構築の本は何かあるのでしょうか?
自分、Apacheの設定ですらセキュリティとかパフォーマンス考えてやってたらめちゃくちゃ時間かかりました
MySQLは更に時間かかりましたが
0992nobodyさん2010/11/15(月) 14:07:08ID:???
ヤーマダーか
0993nobodyさん2010/11/15(月) 14:11:44ID:???
>>991
PHP関連の書籍 第6版
http://hibari.2ch.net/test/read.cgi/php/1213919075/
0994nobodyさん2010/11/15(月) 14:20:16ID:???
鯖のセキュリティを考えるのは鯖管であって開発側は意識する必要はない
開発側が意識すべきはアプリケーションのセキュリティ
鯖のパフォーマンスも同様
そんなの考慮したところで本番環境じゃ自分ではどうしようもできない(専用鯖ならいざ知らず)
開発側が考慮するのはアプリケーションのパフォーマンスであって鯖のパフォーマンスではない
鯖の設定やパフォーマンスを極めるのはPHP開発において実に無意味だ
本番で使う予定の関数をテスト環境でも使えるようにすればいいだけでOSはどうでもいい
確かにOSによって動作の異なる関数もあるがそれはマニュアルに注意書きしてあるし
Windowsで動いてLinuxで動かないなんてPHPアプリケーションを作るほうが難しい
パーミッションにしても勉強とかは必要ないしパターンを覚えればいいだけで意識する必要はない
PHPファイルはいじる必要はないしログなんかは書き込み権限を与えるだけでよい
ファイル操作するディレクトリは実行権限を与えればよい
俺らはPHPをやってるんだぜ
0995nobodyさん2010/11/15(月) 14:30:42ID:???
PHP使うのにOSの知識がいるのはコマンド操作する時ぐらいだな
パーミッションなんてCGIを設定してきた世代には知ってて当然だが
最近は全く知らない状態からPHP開発したりで知らない人多いのかね?
開発の前に他人のスクリプトの設定を経験すると思うんだけどな
Windowsにパーミッションの概念がないことは知らない人は何気に多そうだけど
0996nobodyさん2010/11/15(月) 14:42:18ID:???
どこを縦読み
0997nobodyさん2010/11/15(月) 14:49:43ID:???
0998nobodyさん2010/11/15(月) 15:14:25ID:???
パーミッション知らないままPHPを使えているってことは
xamppはすごいってことになるな
0999nobodyさん2010/11/15(月) 15:23:13ID:???
xamppじゃなくてwindowsの問題なのでは
1000nobodyさん2010/11/15(月) 15:26:37ID:qtz/5+XK
1000
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。