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

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

レス数が950を超えています。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等)・フレームワークは各該当スレへ
0889nobodyさん2010/11/12(金) 00:21:56ID:???
>>888
かな? って・・・
0890nobodyさん2010/11/12(金) 01:51:39ID:FZPLBchw
こんばんは。

ユーザが入力した文字列($text)を表示するとき、いつも
htmlentities($text, ENT_QUOTES, 'UTF-8');
としています。

今回、strip_tagsで一部のタグを許可したいのですが、
その場合はhtmlentitiesを使わずに
strip_tags($text, '<ul><li><span>');
のようにするだけでXSSなどに対処できているのでしょうか?

どうぞよろしくお願いします。
0891nobodyさん2010/11/12(金) 02:05:48ID:???
XSSで問題なのはJavaScriptなので
それらを無効にできればよい
具体的にはjavascript文字列、<script>タグ、onClickなどのonイベントハンドラあたりを除去かな
まぁ無難なのは直接タグを記述させるのではなく
プレースホルダのような感じで代わりのものを使用する方法
なんか適当な代替タグのようなものを使って利用者にはそれで記述してもらう
例えば[太字]あいうえお[/太字][強調]こんにちは[/強調]とかしてもらって
サーバ側でhtmlspecialchars処理のあとに[太字]を<strong>に置き換えたりする処理をすればよい
0892nobodyさん2010/11/12(金) 02:14:00ID:???
>>890
strip_tagsは
<span onmouseover="alert('XSS!!')" style="display:block;width:100%;height:100%">hey</span>

なんて記述も余裕でスルーするので、>>891の方法が現実的
0893nobodyさん2010/11/12(金) 02:15:51ID:FZPLBchw
>>891-892
なるほどー。
<script>タグは許可しませんが、確かに、他のタグ内でonclickなどを使われてしまう可能性がありますね。
それを除去する方法について知識がないので、代替タグにするのが楽かなと思いました。
早速やってみます。
ありがとうございました!
0894nobodyさん2010/11/12(金) 05:21:11ID:EVG7rP8i
日本語を扱っている場合、mbstringが使えるのって普通ですか?
私が使っているサーバで、phpinfo()するとmbstringの項目が出てこないので
管理者に問い合わせようとしています。
0895nobodyさん2010/11/12(金) 05:51:16ID:???
バージョンしらんけど古いサーバなら対応してないんじゃね
その場合管理者にメールしてもスルーされると思うが
root権限なしの専用鯖ならともかくどうせ共有鯖だろ?
08968942010/11/12(金) 06:26:27ID:EVG7rP8i
>>895
レスありがとうございます。

サーバの設置は今年の4月です。
業者への要求資料にmbstringについて明記していなかったのではないか、
と考えています。
私はサーバ管理者と連絡が取れる立場です。
0897nobodyさん2010/11/12(金) 06:39:27ID:???
業務用の専用鯖かな?
連絡して解決するならとったほうがいいかもね
0898nobodyさん2010/11/12(金) 08:24:32ID:???
>>894
mbstring は拡張モジュールです。つまり、デフォルトでは 有効にならないということです。 configure スクリプトでモジュールを有効にする必要が あります。詳細は、インストールの 節を参照してください。
http://jp.php.net/manual/ja/mbstring.installation.php
0899nobodyさん2010/11/12(金) 15:13:58ID:???
拡張モジュールはmb以外にもたくさんあるから、
必要なモジュールがあるなら自分で確認しておかないと。
0900nobodyさん2010/11/12(金) 17:10:00ID:???
たくさんはいいすぎやろ
ま、でも設定の確認をいくつかとmbは入れたほうがいい
mbの出来はいまいちだけど代わるもんがないから
0901nobodyさん2010/11/12(金) 18:52:31ID:???
何がいまいちなんだよ…
0902nobodyさん2010/11/12(金) 19:00:13ID:???
文字コード判別が貧弱
0903nobodyさん2010/11/12(金) 19:01:26ID:???
どのライブラリもだろ…
perlの時の自動判別限界をしらんのかいな…
0904nobodyさん2010/11/12(金) 19:16:57ID:???
いやだからperlのjcodeのgetcodeよりも貧弱だって
おまいこそ知らんのか
0905nobodyさん2010/11/12(金) 19:52:27ID:???
そういう時は判別する文字を連結して放り込むんだよw
0906nobodyさん2010/11/12(金) 19:58:29ID:???
自動判別が理論的に必ず漏れるから意味無いといってるのにそれがわからんのかいな…
自動判別なんざ脆弱性の固まりもいいとこ
0907nobodyさん2010/11/12(金) 20:07:41ID:???
可能性を言い出したら切がないわ
0908nobodyさん2010/11/12(金) 20:10:30ID:???
PHPの文字コード自動判定は、理論的に漏れるとか厳密がどうのというレベルを語ることすらおこがましいくらいのクソっぷりということを忘れるなよ
0909nobodyさん2010/11/12(金) 20:22:01ID:???
mbstringで文字コード判別することなんてある?
0910nobodyさん2010/11/12(金) 20:41:20ID:???
まぁ仲良くしろよ
0911nobodyさん2010/11/12(金) 21:13:26ID:???
判別しなければならない状況で他に選択肢がないのにそれを批判して何の意味があるのかわからん。
自分ならもっとすばらしいものが作れるというなら作ってPHPに提供してやれ。

他サイトのXMLとか読む時に文字判別しなければならない事がある。
たらればを言うならxmlで指定してある文字コードすら信頼できないのに他に手がないだろ。
0912nobodyさん2010/11/12(金) 21:14:26ID:???
仲良くはできないな。嫌なら日本語使うのやめろ。
0913nobodyさん2010/11/12(金) 21:35:42ID:???
どのライブラリも同じとか言ってるやつ何も作った経験ないやつだろ
0914nobodyさん2010/11/13(土) 16:13:06ID:3Bs1U7D4
(1) サーバがPHPでHTMLを出力
(2) クライアントがJavaScriptで作成されたツールで、HTMLの内容を変更
(3) 変更内容をサーバに送信
(4) サーバが変更内容を反映し、再度PHPでHTMLを出力

という操作を行いたいのですが、(3)の仕方が分かりません。
どのようにすれば良いでしょうか?
0915nobodyさん2010/11/13(土) 16:17:34ID:???
>>914
それJavaScriptの話じゃね?
ttp://hibari.2ch.net/test/read.cgi/hp/1289130738/
0916nobodyさん2010/11/13(土) 16:19:15ID:???
>>914
ツールがjsらしいのでXMLHttpRequestを使ったら良いのでは?
0917nobodyさん2010/11/13(土) 17:56:47ID:Rt+/eZUv
(サーバーで)PHP実行中に、1分程度処理時間がかるので、途中経過を
端末に表示させたいのですが、
print "hoge";
flush();
くらいじゃ反応してくれないし、チョット調べた範囲では
あまりうまい方法もなさそうなのですが、裏技でも結構ですので、
何か技はありますか。
0918nobodyさん2010/11/13(土) 18:05:12ID:???
>>917
http://framework.zend.com/manual/ja/zend.progressbar.introduction.html
09199142010/11/13(土) 18:36:51ID:???
>>915
その通りでした。スレチ申し訳ありません。

>>916
ありがとうございます。
調べてみます。
0920nobodyさん2010/11/13(土) 20:54:50ID:F54T5R+w
セッション初心者です。
フォームで入力した値を、セッション変数に保存させるページを作っています。
「最初の1回」は無事にうまく保存できるのですが、それを2回目以降「上書き」することができません。
何処がおかしいのでしょうか。
┏━━━━━━━━━━━━━━━━━━
┃sample.php
┗━━━━━━━━━━━━━━━━━━
<?php
session_name("samplesession");
session_start();
session_regenerate_id(true);
echo('<?xml version="1.0" encoding="Shift-JIS"?>');
?>
<!DOCTYPE html PUBLIC '-//WAPFORUM//DTD XHTML Mobile 1.0//EN' 'http://www.wapforum.org/DTD/xhtml-mobile10.dtd'>;
<html xmlns='http://www.w3.org/1999/xhtml'>;
<head><meta http-equiv='Content-Type' content='application/xhtml+xml; charset=UTF-8' /></head><body>

現在値:<?= $_SESSION['name']; ?><br /><br />
<form action="sample_save.php" method="post">
<input id="name" name="name" type="text" value=<?= '"'.$_SESSION['name'].'"'; ?> />
<input type="submit" name="save" value="ひとまず保存" />
</form></body></html>
┏━━━━━━━━━━━━━━━━━━
┃sample_save.php
┗━━━━━━━━━━━━━━━━━━
<?php
session_name("samplesession");
session_start();
session_regenerate_id(true);
$_SESSION = $_SESSION + $_POST + $_GET;
header("Location: sample.php");
?>
0921お願いします2010/11/13(土) 21:15:20ID:VS6aZhgO
スレッド作成代行スレではスルーされたのでお願いします。
どなたかスレを立ててください。

【板名】文学
【板のURL】http://kamome.2ch.net/book/
【タイトル】↓
【多彩な】川上未映子43【才能】
【名前】
【メール欄(省略可)】
【本文】↓
ミュージシャンであり女優であり文筆家であり小説家であり詩人でもある、
多彩な才能を持った川上未映子について語るスレッドです。

2010年も複数の賞を獲り、充実! 今一番期待されている女流作家と言えばこの人!

盗作疑惑が挙げられてますが、盗作だ盗用だと言い張っている作家(T)が川上や出版社に抗議をせず、
擁護者(自演あるいはさしがね疑惑あり)と共に2ちゃんねるや自身の掲示板で何カ月も自己満足行為を繰り返しているのが現状です。
作家二人が具体的な対話をするまでは何の進展もないので、
盗作疑惑について語る人はTの掲示板か、別スレでお願いします。
また、そのT自体が谷崎作品の盗作、盗用疑惑まであがっているくらいです。
ここは盗作や盗用を軽く見て積極的な行動を起こさないTの自己満足を満たすスレではありません。
アンチの連投でスレが見にくくなると困るので、アンチは別のスレまで移動をお願いします。

川上未映子の純粋悲性批判
http://www.mieko.jp/

wiki
http://ja.wikipedia.org/wiki/%E5%B7%9D%E4%B8%8A%E6%9C%AA%E6%98%A0%E5%AD%90

前スレ
【おさきみどり】川上未映子42【どう書くの?】
http://kamome.2ch.net/test/read.cgi/book/1289286709/
0922nobodyさん2010/11/13(土) 21:18:50ID:???
>>920
>$_SESSION = $_SESSION + $_POST + $_GET;
元セッションを足してる形になっているよ
09239172010/11/13(土) 22:16:34ID:???
>>918
ありがとうございます。
使ってみます。
0924nobodyさん2010/11/13(土) 22:53:18ID:RAat1siR
eclipse-php-helios-win32.zip

をダウンロードしPHPのデバッグ実行をしようとしているのですが
うまく行きません。

PHPプロジェクトを作成

PHPスクリプトを追加(newfile.php)

Debug As

Debug As PHP Web Page

Not Found
The requested URL /test_php_newfile.php was not found on this server

どうすればデバッグ実行をする事が出来る様になりますか?
0925nobodyさん2010/11/13(土) 22:56:55ID:???
>>924
http://hibari.2ch.net/test/read.cgi/php/1228913125/
0926nobodyさん2010/11/14(日) 07:49:17ID:X4MA/FHW
UML図とかいう、アルゴリズムの流れを描く? ようなものを最近しりました。

僕は今、全部一人でプログラミングをしているのですが、この場合、UML図と
いうのはそこまで必要ないのでしょうか?
0927nobodyさん2010/11/14(日) 08:54:35ID:???
アクティビテク図かな?
ぶっちゃけ使わないよそんなの
UMLといっても色々あるしなぁ
とりあえずシーケンス図だけ覚えとけばいいかと
大規模なシステムじゃなければ業務でも必要ないと思うけどね
設計はお金もかかるしPHPじゃそこまでやらないのが実情
09289272010/11/14(日) 08:55:28ID:???
ごめんタイプミス
アクティビテク図→アクティビティ
0929nobodyさん2010/11/14(日) 08:57:54ID:???
UMLはフレームワーク使ったようなMVCモデル開発でないとあんまり意味のないものだね
0930nobodyさん2010/11/14(日) 09:12:43ID:???
class図は作っておいても損はないな
0931nobodyさん2010/11/14(日) 09:26:01ID:???
>>926
今全部一人でやっているからといって、この先誰かに引き継ぐこともあるんでは?
0932nobodyさん2010/11/14(日) 09:26:05ID:???
男は黙ってフローチャート
0933nobodyさん2010/11/14(日) 12:39:55ID:???
1人で作業してても、ボリュームによっては全体を把握しにくくなる
だからどういう形であれドキュメントにしておくのは良いよ
webだと、ページ遷移図くらいは合った方が良い

あとは余談だけど、全ソース・ディレクトリツリー・DBのTABLE定義書くらいは
あるとすぐに確認できて良い
0934nobodyさん2010/11/14(日) 15:05:38ID:???
そういうのは全部頭に入っているので必要ないんです。
0935nobodyさん2010/11/14(日) 16:09:03ID:???
スカイツリーならうちから見えるよ。
0936nobodyさん2010/11/14(日) 16:27:11ID:KP5Lvxbs
unlinkでファイルを削除するとき、削除できたときのみ次の処理に進みたいです

if(unlink($file)){
 //次の処理へ
}else{
 //失敗しましたよ、警告画面へ
}

という感じでしょうか。
しかし、unlink失敗することなんかあるんですか?
unlinkに限らず、copy();mkdir();rmdir();とかもそうですが、falseを返しうる関数では
プロとして仕事してるみなさんは全部エラー確認してるんですか?
正直「うそだぁ〜?」って感じなんですが…

そんなの滅多にないだろ、なんかの原因でそんなことになったらしょうがない、
「失敗した場合は E_WARNING レベルのエラーが発生します」ってマニュアルが言うなら
E_WARNINGレベルのエラーが出たときだけ管理者にメール飛ばしてくれたら良いよ
…というのが素直な気持ちです。
そんなことは可能ですか? どうしたらいいんでしょうか
0937nobodyさん2010/11/14(日) 16:39:08ID:???
ありえる可能性はあるのだろ?
だったらその可能性を潰しておけばいいじゃないか
俺ならunlinkだけじゃなくてその後にファイルがあるかfile_existsで確認する

因みにエラーが発生した時にメールを飛ばすのは可能
0938nobodyさん2010/11/14(日) 17:14:58ID:???
>>926
不要。
全く不要。
というか無駄。
09399262010/11/14(日) 18:00:59ID:RzAF58kR
みなさん、UML図というかフローチャート?に対する返信ありがとうございました。

ざっくりとどんなものかイメージがちょっとだけできました。

ありがとうございます。
0940nobodyさん2010/11/14(日) 18:02:58ID:???
何も知らないならちゃんと学んだほうがいいと思うけどね
0941nobodyさん2010/11/14(日) 18:11:05ID:???
何も知らないからここで聞いているのではないでしょうか。
0942nobodyさん2010/11/14(日) 18:19:17ID:???
ここで講義しろってこと?
0943nobodyさん2010/11/14(日) 18:27:03ID:???
必要なのか?という質問に対しての解答なんだから間違いじゃないだろ
そして知らないなら学べというのはUMLとはどういった物かを
知っておいて損はないって事が言いたいんだろ

UMLの内容を教えてくださいとかそういうのはスレチだし
ここで質問されても困るわ
0944nobodyさん2010/11/14(日) 18:37:24ID:sSDOPmC3
>>922 おおっ…なるほど! 無事解決しました。ありがとうございます。

もうひとつ質問なのですが

<?php
$_COOKIE["test"] = "うむ";

if($_COOKIE["test"] == "うむ"){
$result = "クッキー有効です";
}else{
$result = "クッキー無効です";
ini_set('session.use_trans_sid', '1');
}

session_start();
session_regenerate_id(true);

print $_COOKIE["test"];
print $result;
?>


↑これを、クッキーを無効にしたブラウザで開いても
「うむ」「クッキー有効です」と出てしまいます…

ブラウザのクッキーが有効かどうか調べるには、どうするのが良いのでしょうか。

別ページでクッキーに値を入れてからリダイレクトしたら、
今度はクッキー有効なブラウザでも「無効です」と言われるし…

session.use_trans_sidを使わずに、直接埋め込んだほうがいいのかな。
0945nobodyさん2010/11/14(日) 18:48:40ID:???
>>944
http://www.php.net/manual/ja/function.setcookie.php#67191
http://www.webdeveloper.com/forum/archive/index.php/t-67426.html
ご参考までに
09469432010/11/14(日) 19:09:17ID:sSDOPmC3
>>945
解決しました。
0947nobodyさん2010/11/14(日) 19:16:32ID:???
>>946
どう解決したのか教えて欲しい。
0948nobodyさん2010/11/14(日) 19:49:48ID:???
COOKIEに書いた値が送出されるタイミングの問題だろ
>>943の例だと変数チェックしてるだけ
0949nobodyさん2010/11/14(日) 22:29:25ID:X4MA/FHW
WEB上の文章を取り込んで、 入力したキーワードを元にAND検索をしたいのです。
この場合、楽にできるプラグインとか関数など教えてもらえないでしょうか?


ちなみに、WEB上の文章はデータベースに登録せず、毎回取得しては
捨てるので、データベースに入っているものを AND検索するわけではないです。

今までは、わざわざ 入力されたキーワードをスペースで割って、trimして、
2つのワード、どちらも検索に引っかかったらtrueとしていました。
0950nobodyさん2010/11/14(日) 22:52:43ID:???
つGoogle
0951nobodyさん2010/11/15(月) 00:20:45ID:???
つGoogleって何でしょうか
0952nobodyさん2010/11/15(月) 00:30:27ID:1Q0g3VPk
バリューコマースのAPIについての質問はNGですか?

<?php

function request(){

$urlbase = "http://webservice.valuecommerce.ne.jp/productdb/search?";
$token = "XXXXXXXXXXXXXXXXXXXX";
$keyword = "narumiya";

$url = "{$urlbase}token={$token}&keyword={$keyword}";
$xml = simplexml_load_file($url);

echo "<pre>";
var_dump($xml);
echo "</pre>";
}
request();
?>

こうした形式で書いて、APIのレスポンスが空になってしまうんですが何故でしょうか?
ちなみにSHOPと提携はしており、カテゴリーAPIへのリクエストではちゃんと結果が返ってきます。
0953nobodyさん2010/11/15(月) 00:50:33ID:???
とりあえずPHP経由しないでリクエストしてみたら?
0954nobodyさん2010/11/15(月) 01:05:26ID:???
すみません、COBOLで書かれたシステムをPHPで書き直す案件を
受注したのですが、COBOLが全くわかりません。
この場合、COBOLを一から勉強しないと駄目でしょうか。
PHPも勉強し始めたばかりなので他の言語に手を出したくないのですが。
0955nobodyさん2010/11/15(月) 01:16:45ID:???
自分の能力に見合った案件を受けること
0956nobodyさん2010/11/15(月) 01:24:25ID:???
9割で俺がやってあげるよ
0957nobodyさん2010/11/15(月) 01:29:49ID:1Q0g3VPk
>>953
それでも駄目でした。
バリューコマースでサンプルURLとして公開されているものを(不要なパラメーターを削って)
アクセスしてみても空だったので、問い合わせた方が良いのかもしれません…。
0958nobodyさん2010/11/15(月) 01:30:30ID:???
もう受注が決まってしまったので何とかしないといけないのです。
個人なので全て自分でやらねばならず、途方にくれています。
どなたかヒントだけでもいただけないでしょうか。
0959nobodyさん2010/11/15(月) 01:31:23ID:???
>>957
そうだね、だとするとPHPの問題じゃなさそうだね
>>958
ヒントって何がほしいの?
0960nobodyさん2010/11/15(月) 01:32:57ID:???
COBOLが全くわからないのです。
出来ると言ってしまった以上、何とかしないといけないのですが、
何から始めればいいのでしょうか。
0961nobodyさん2010/11/15(月) 01:33:24ID:???
>>960
本屋に行ってCOBOL入門とか書かれてる本を買うとか
0962nobodyさん2010/11/15(月) 01:37:54ID:???
>>954
似たような案件10個取ってきて全部>>956にやらせれば解決。
0963nobodyさん2010/11/15(月) 01:39:50ID:???
phpはじめたばかりで個人で受注とか
世の中末恐ろしいな
0964nobodyさん2010/11/15(月) 01:42:14ID:???
>>960
そこは今から勉強してもどうなるものでもないんじゃ?
956じゃないにしても出来るやつを見つけて投げるのがベストだと。
逆にそれを続けられるならいい仲介になれる。
0965nobodyさん2010/11/15(月) 02:39:43ID:???
悲惨な末路が待っていることは確かだな
0966nobodyさん2010/11/15(月) 08:56:24ID:kwhiKnwN
質問させてください
((/log/CustomLog.php))
<?php
$line = date('H:i:s')."\t";
$line .= $_SERVER['HTTP_REFERER']."\t";
$file = fopen('./data/'.date('Ymd').'.log', 'a+');
flock($file, LOCK_EX);
fwrite($file, $line."\n");
flock($file, LOCK_UN);
fclose($file);

((/log/log.php))
<?php require_once 'CustomLog.php'; ?>
<html><body>カスタムログを記録</body></html>

でlog.phpを実行するとブラウザには「カスタムログを記録」と表示されるのに、
./dataディレクトリにはCustomLog.phpで作成されたはずのログが記録されません
0967nobodyさん2010/11/15(月) 08:57:19ID:kwhiKnwN
httpd.confの設定:
User hoge
Group hogehoge

PHPの実行ユーザー名(自分):foo
hogehogeグループにも参加

htdocsの位置:/usr/local/apache2/htdocs (drwxr-xr-x 4 root root)
logディレクトリはhtdocs以下にあります(drwxrwxr-x 3 foo foo)
CustomLog.php (-rw-rw-r-- 1 foo foo)
dataディレクトリ (drwxrwxr-x 2 foo foo)

他にもファイルアップロードのスクリプト等でも思ったようにディレクトリ内にファイルがアップロードされませんでした
Linuxのパーミッションの影響でしょうか?
色々と手を加えてみたのですが解決しませんでした
0968nobodyさん2010/11/15(月) 09:13:40ID:???
/log/dataっていうディレクトリはあるの?
というかファイルパスの問題な気もするけど
includepathとか設定しないかぎりはapache/logからはincludeされず
/logからincludeしようとするよ?
0969nobodyさん2010/11/15(月) 09:19:55ID:???
>>966
<?php require_once 'CustomLog.php'; ?>
パスの概念がおかしいのでは?
エラーを表示するようにするかエラーログを見てくると良いかも
09709362010/11/15(月) 09:44:53ID:v7N8eLuf
ありがとうございます

>俺ならunlinkだけじゃなくてその後にファイルがあるかfile_existsで確認する
本当にやってるんですか、凄いな
初心者向けのPHP開発本みたいなの見るとそんな慎重な確認処理なんて
書いてないですよね
あれは非現実的で不要な処理だからじゃなくて「ページの都合」ってことだったのかな〜

他の皆さん、やってますか?
0971nobodyさん2010/11/15(月) 09:51:26ID:???
>>970
目の前にファイルがあるのですが、このファイルは削除しても問題ないですか?
なんて質問に誰がまともに答えられるw
0972nobodyさん2010/11/15(月) 09:55:24ID:???
>>954
これは釣りだと思いたい・・・
釣りじゃないなら恐ろしてく見てらんないわ
0973nobodyさん2010/11/15(月) 09:56:47ID:kwhiKnwN
/usr/local/apache2/htdocs/pz/ch2/log/内にdataフォルダ、CustomLog.php、log.phpが存在しております

また、php.iniはinclude_path = ".:/usr/local/include/php:usr/local/lib/php"となっております
このインクルードパスが問題なのでしょうか?

今エラーログを見てみたら、failed to open stream: Permission denied等のエラーが色々と出ておりました
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:???
俺が立てる
レス数が950を超えています。1000を超えると書き込みができなくなります。