【PHP】下らねぇ質問はID出して書き込みやがれ 100
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2010/10/27(水) 17:41:33ID:2BwSQxVQ過去スレ、関連スレ、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等)・フレームワークは各該当スレへ
0951nobodyさん
2010/11/15(月) 00:20:45ID:???0952nobodyさん
2010/11/15(月) 00:30:27ID:1Q0g3VPk<?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:???0954nobodyさん
2010/11/15(月) 01:05:26ID:???受注したのですが、COBOLが全くわかりません。
この場合、COBOLを一から勉強しないと駄目でしょうか。
PHPも勉強し始めたばかりなので他の言語に手を出したくないのですが。
0955nobodyさん
2010/11/15(月) 01:16:45ID:???0956nobodyさん
2010/11/15(月) 01:24:25ID:???0957nobodyさん
2010/11/15(月) 01:29:49ID:1Q0g3VPkそれでも駄目でした。
バリューコマースでサンプルURLとして公開されているものを(不要なパラメーターを削って)
アクセスしてみても空だったので、問い合わせた方が良いのかもしれません…。
0958nobodyさん
2010/11/15(月) 01:30:30ID:???個人なので全て自分でやらねばならず、途方にくれています。
どなたかヒントだけでもいただけないでしょうか。
0960nobodyさん
2010/11/15(月) 01:32:57ID:???出来ると言ってしまった以上、何とかしないといけないのですが、
何から始めればいいのでしょうか。
0963nobodyさん
2010/11/15(月) 01:39:50ID:???世の中末恐ろしいな
0964nobodyさん
2010/11/15(月) 01:42:14ID:???そこは今から勉強してもどうなるものでもないんじゃ?
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:kwhiKnwNUser 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:???というかファイルパスの問題な気もするけど
includepathとか設定しないかぎりはapache/logからはincludeされず
/logからincludeしようとするよ?
0969nobodyさん
2010/11/15(月) 09:19:55ID:???<?php require_once 'CustomLog.php'; ?>
パスの概念がおかしいのでは?
エラーを表示するようにするかエラーログを見てくると良いかも
0970936
2010/11/15(月) 09:44:53ID:v7N8eLuf>俺ならunlinkだけじゃなくてその後にファイルがあるかfile_existsで確認する
本当にやってるんですか、凄いな
初心者向けのPHP開発本みたいなの見るとそんな慎重な確認処理なんて
書いてないですよね
あれは非現実的で不要な処理だからじゃなくて「ページの都合」ってことだったのかな〜
他の皆さん、やってますか?
0971nobodyさん
2010/11/15(月) 09:51:26ID:???目の前にファイルがあるのですが、このファイルは削除しても問題ないですか?
なんて質問に誰がまともに答えられるw
0973nobodyさん
2010/11/15(月) 09:56:47ID:kwhiKnwNまた、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:???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:???とりあえず777で試す方が先だね
0976nobodyさん
2010/11/15(月) 11:10:07ID:kwhiKnwNすみません、一般的にこういう場合フォルダは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:???そうしないとセーフモードで制限される関数が使えないし
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:???その書き方だchownを知らない?
ユーザhogeで書けないと意味が無いので、rootでディレクトリを作ったあとで
chown でhogeユーザに所有者をかえて
chmod で権限を変えれば良い
apache専用ユーザがhoge、グループもhogeだとしたら
自分の場合は、ユーザfooのサブグループにhogeを追加する(usermod -G hoge foo)
そしてファイルやディレクトリの権限は660か770にする。
0980nobodyさん
2010/11/15(月) 11:59:28ID:???hogehoge権限で動いていたら書き込めないのは当たり前。
ディレクトリを777にした時にファイルが出来たらしいけどその所有者誰になってます?。
0981nobodyさん
2010/11/15(月) 12:00:01ID:???もう少しディレクトとファイルの構成を考えたほうがいい
ログを保存する場所にphpスクリプトがあるというのがそもそもおかしな話
0982nobodyさん
2010/11/15(月) 12:19:49ID:kwhiKnwNchown -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/などに入れようとか思っています
0983936
2010/11/15(月) 12:23:42ID:v7N8eLufえ?そんなこと聞いてないですが…
そう思われてるのかな
0984980
2010/11/15(月) 12:25:56ID:???あ、もともとユーザー権限で動かす気ないのか、すまん。
その環境で動かすとgroup hogehogeを利用している全ユーザーに少なくともデータの上書きはされる覚悟が必要だし
PHPファイルにパスワードとか書くと簡単に抜かれるからパーミッションとか気にしても知れてるかもよ。
0986nobodyさん
2010/11/15(月) 12:45:27ID:???0987nobodyさん
2010/11/15(月) 12:58:39ID:???0988nobodyさん
2010/11/15(月) 12:59:26ID:???0989nobodyさん
2010/11/15(月) 13:03:31ID:???http://hibari.2ch.net/test/read.cgi/php/1289793607/
0991nobodyさん
2010/11/15(月) 14:03:37ID:kwhiKnwN各言語にて書籍を乱発されている方の本ですw
その中のPEAR&ZFのサンプル本です
何故だか最近のPHPの本はWindows環境のXamppでの構築ばかり載っているので、linuxのパーミッションの事とか載ってないように思います
更に本番を想定したLAMP構築の本は何かあるのでしょうか?
自分、Apacheの設定ですらセキュリティとかパフォーマンス考えてやってたらめちゃくちゃ時間かかりました
MySQLは更に時間かかりましたが
0992nobodyさん
2010/11/15(月) 14:07:08ID:???0993nobodyさん
2010/11/15(月) 14:11:44ID:???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:???パーミッションなんてCGIを設定してきた世代には知ってて当然だが
最近は全く知らない状態からPHP開発したりで知らない人多いのかね?
開発の前に他人のスクリプトの設定を経験すると思うんだけどな
Windowsにパーミッションの概念がないことは知らない人は何気に多そうだけど
0996nobodyさん
2010/11/15(月) 14:42:18ID:???0997nobodyさん
2010/11/15(月) 14:49:43ID:???0998nobodyさん
2010/11/15(月) 15:14:25ID:???xamppはすごいってことになるな
0999nobodyさん
2010/11/15(月) 15:23:13ID:???1000nobodyさん
2010/11/15(月) 15:26:37ID:qtz/5+XK10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。