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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 118
http://kohada.2ch.net/test/read.cgi/php/1335198562/

◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0957nobodyさん2012/06/20(水) 20:14:25.90ID:l2ggqhMS
フォルダ名に関してです。
フォルダ名を変数に入れる時、最後の「/」を付けるかどうかで悩んでいます。

"./data/archive";
最後に/が無いこの方式だと
「/data」が1フォルダ、「/archive」が1フォルダ と区切りが分かりやすい
それに__DIR__等も最後に/が無い書き方で返すから統一出来る

$dir="./data/archive/";
この方/が有る式だと、このフォルダにファイルを置きたい時
$dir.="saveFile.txt";とファイル名をそのまま書くだけでフルパスを作ることが出来る

とそれぞれ一長一短なのですが、皆様はどちらの書き方を使っているでしょうか。
例の./data も./data/archiveもどちらもフォルダ名です。
0958nobodyさん2012/06/20(水) 20:41:11.37ID:???
区切りが分かりやすい
が意味不明

ディレクトリの末尾、ファイルの先頭に/を付けず、連結時に/を挟むことにすればいい

末尾に/があったらディレクトリ、なかったらファイル、という方式もある
0959nobodyさん2012/06/20(水) 21:43:07.92ID:???
>>956
へ?BCMath使えばいいんでないの?
0960nobodyさん2012/06/21(木) 00:48:49.40ID:???
テンプレに追加するか・・・
0961nobodyさん2012/06/21(木) 09:12:49.66ID:TKMOd/fi
現在、メールに添付されて送信された画像をサーバーに登録するという事をphpで行っています。
ところが、メールを送信した後は必ず(送信元に)エラーメールが返ってきます。
phpでの作業自体は最後まで正常に行われているようで、キチンとサーバーには画像は登録されています。
メールのエラー内容は、
expanded from <*******@*****.com>): Command died with signal 11: "/usr/bin/php /home/httpd/hogehoge.php"
といったものです。
恐らくphpスクリプトから何らかの異常が発生したと出ているようですが、その異常がわかりません。
画像の処理はimagickを使っています。
phpスクリプトのほうで色々調べてみましたが、imagick::resizeImageのところで異常が出ているようでした。(この行をコメントにするとエラーメールは返ってきません)
phpとimagickとでバージョンによっての不適合とかあるのでしょうか?

php 5.3.14
imagick(PECL) 3.0.1 stable

よろしくお願いします。
09629612012/06/21(木) 09:19:41.36ID:TKMOd/fi
情報後出しですいません。

件のphpスクリプトをcliで動かしても、何のエラーも表示されません。
同じ処理をしている、webから動かす方のスクリプトもあるのですが、こちらのほうも何のエラーもなく正常に処理が終了します。
phpのエラー出力をE_ALLにしても同様です。
0963nobodyさん2012/06/21(木) 10:10:48.63ID:2NYHmDqp
PHPでDBのライブラリ群を作りたいんだけど、
既にあるFWでおすすめのない?

1. 軽い、処理速度が早い
2. バリバリ機能完備よりは、ある程度効率的に使えるのがいい

また、一から作る際は皆はどんな構成にしてる?
0964nobodyさん2012/06/21(木) 10:18:47.92ID:???
直接呼ぶ方が高速
0965nobodyさん2012/06/21(木) 10:34:03.71ID:2NYHmDqp
直接っていうのはmysql関数ってことだよね
それはわかってるんだけど、どちらにせよ使いやすくするにはクラス化するよね

それと、php.netのサイトでmysql_connectは推奨されないっぽいけどなんでだろ
0966nobodyさん2012/06/21(木) 11:10:12.35ID:???
MySQLi 使えということかと
0967nobodyさん2012/06/21(木) 12:10:34.75ID:???
そもそも高速な部類の言語じゃないよ
PHPって
0968nobodyさん2012/06/21(木) 12:16:17.20ID:???
直接呼ぶとPHP部分の割合が減るから
0969nobodyさん2012/06/21(木) 13:03:21.96ID:???
>>962
> 件のphpスクリプトをcliで動かしても、何のエラーも表示されません。
メールサーバーの実行ユーザーで試してみた?

>>965
MySQL側のAPIの変化に対応できる設計じゃなかったから
09709612012/06/21(木) 14:22:23.81ID:TKMOd/fi
>969
メールサーバーはpostfixを使っているのですが、ユーザーpostfixはnologinになっているので試していません。
今回、サーバーを切り替えるにあたって、システムをそのまま新しいサーバーに持って来たのですが、旧サーバーでは同じスクリプトで何も問題は起きていませんでした。
新しいサーバーは、php・postfix・php、それぞれのバージョンこそ違えど、全く同じように設定しています。
もちろんバージョンの違いで、設定ファイルが若干違っている部分があるので、厳密に全く同じかと言われればそうではないのですが・・・。
0971nobodyさん2012/06/21(木) 14:47:24.04ID:???
>>970
suのオプションでシェルを指定するやり方で試してくれ
0972nobodyさん2012/06/21(木) 16:06:54.96ID:???
PDO使うのはダメなん?
09739612012/06/21(木) 16:15:03.45ID:TKMOd/fi
>971
?? su -s の事でしょうか?
具体的にどう確認したらいいのでしょうか?無知で申し訳ありません。
09749612012/06/21(木) 16:17:08.01ID:TKMOd/fi
ちなみに、
# su postfix -c "php /home/httpd/hoge.php"

This account is currently not available.
となってしまいます。
0975nobodyさん2012/06/21(木) 16:29:53.05ID:???
いやいや
メールのあて先のユーザーでやるんだよ、それとも、aliasesでやってんの?
09769612012/06/21(木) 16:40:00.61ID:TKMOd/fi
>975
すいません。
メールの宛先のユーザーでやっても
This account is currently not available.
となります。
0977nobodyさん2012/06/21(木) 16:46:39.67ID:???
んーー、、もっとも単純な形にできない?
メールの内容関係無しにimagemagickで/tmpにファイル作るだけのスクリプト作って
それを呼んでみるとか
09789612012/06/21(木) 17:39:14.93ID:TKMOd/fi
>977
単純にメールからファイルを受け取って、それをサーバーに保存するだけなら問題ないんですよね。
imagick::resizeImageを使って、画像をリサイズするとエラーが出るんです・・・。
リサイズ処理せずにそのまま登録すればいいんですけどね・・・最近は10M超ピクセルの画像を平気でメールで送ってくるので・・・、そうもいかず・・・。
処理自体はちゃんと行われるので、エラーメールが返信されなければそれに越した事はないのですが(気持ち悪いですが)。
0979nobodyさん2012/06/21(木) 17:45:39.95ID:???
特定の画像で起きるのかな?
メモリ足りないようだけど、設定変えられる?
09809612012/06/21(木) 17:51:32.44ID:TKMOd/fi
>979
特定の画像という事では無く、どんな画像でも起こるようです。
700KB〜3MBぐらいの数十枚の画像で試しましたが、全て同じ結果でした。
phpのメモリの設定は変えられます。現在のmemory_limitは128Mですので、足りないという事は無いと思います・・・。
09819712012/06/21(木) 17:58:48.28ID:???
>>978
postfixユーザーで試してくれって事だよ
nologinってのはシェルに /sbin/nologin が指定されてるので
$ su -s 普段使っているシェル postfix
と指定してやれば切り替えられるはず
その状態で
$ php --ini
$ php -i | grep memory_limit
の結果を確認するといいかも
09829612012/06/21(木) 18:09:27.83ID:TKMOd/fi
何度も吸いません。
ユーザーpostfixがnologinになってるので、usermodでbashに変更しました。
その上でpostfixに切り替え、phpのメモリを確認したところ、
bash-4.1$ php -i|grep memory_limit
memory_limit => 128M => 128M
と表示されたので128Mのままのようです。
0983nobodyさん2012/06/21(木) 18:15:06.62ID:???
何度も吸いません。
えろすぎ
0984nobodyさん2012/06/21(木) 18:15:27.80ID:???
スクリプトの実行はpostfixアカウントじゃなくて宛先ユーザーだよ
09859612012/06/21(木) 18:20:17.42ID:TKMOd/fi
>983
失礼しました。

>984
アカウントを宛先ユーザーに切り替えて、試してもやはり128Mで同様でした。
0986長文なので分けてレス2012/06/21(木) 18:37:40.04ID:???
文字化けして困ってます。
<?php
$hostname = "××";
$uname = "××";
$upass = "××";
$dbname = "××";
$tblname = "××";

//接続する
if( !$res_dbcon = mysql_connect( $hostname, $uname, $upass) ){
print "MYSQL への接続に失敗しました。";
exit;
}

//DB
mysql_select_db( $dbname, $res_dbcon ) or die('error ' . mysql_error());
bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )

//SQL文を実行し、結果のリソースを取得。
$res_result = mysql_query( "SELECT * from `{$tblname}`", $res_dbcon ) or die('error ' . mysql_error());

//結果を表示
while( $row = mysql_fetch_array( $res_result, MYSQL_ASSOC ) ){
var_dump( $row );
}

//MySQLへの接続を切断する
mysql_close( $res_dbcon );
?>
0987長文なので分けてレス2012/06/21(木) 18:39:09.42ID:???
文字化け解消の事で調べていたら
bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )
を入れると良いってあったんだけど、入れると真っ白です。

エラーログを見ても、
bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )
を入れた行だけ指摘します。
この文で合っているのでしょうか?

外すと、
array(3) { ["code"]=> string(3) "???" ["title"]=> string(3) "111" [3]=> string(3) "aaa" }
array(3) { ["code"]=> string(3) "???" ["title"]=> string(3) "222" [3]=> string(3) "iii" }
array(3) { ["code"]=> string(3) "???" ["title"]=> string(3) "333" [3]=> string(3) "uuu" }

???は日本語があったところですが、
なぜ
bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )
をいれても解消できないのでしょうか?
どのような使い方をすれば文字化けは解消できるのでしょうか?

自サーバ centos6 mysql 5.1.61 php 5.3.3
0988nobodyさん2012/06/21(木) 18:42:18.86ID:???
PHPは1.phpを実行中に別スクリプトから$pathのファイル内容を
書き換える事ができないのですか?別スクリプトから編集しようと
すると待たされてしまいます。

[1.php]
$wait = 15;
$mtime = filemtime($path);
while (filemtime($path) == $mtime && $wait-- > 0) {
clearstatcache();
sleep(1);
}

09899712012/06/21(木) 18:48:46.03ID:???
>>984
へぇ知らなかった

>>985
postfixの設定 default_privs で指定されたユーザーでも確認してみてくれ
0990nobodyさん2012/06/21(木) 18:50:39.63ID:???
>>987
ためしにSET NAMES utf8を投げてみて
昔、mysql_set_charsetが使えなかった覚えがある

それでだめならmy.cnfに追加するしかないかも
default-character-set=utf8
09919612012/06/21(木) 19:27:15.34ID:TKMOd/fi
>989
default_privsはコメントアウトしていますが、デフォルトのnobodyで確認したところ 128M でした。
09929882012/06/21(木) 19:39:01.53ID:???
リスエストしていたPHPファイルの問題でした
0993nobodyさん2012/06/21(木) 19:40:56.44ID:???
次スレ
http://kohada.2ch.net/test/read.cgi/php/1340275027/
0994nobodyさん2012/06/22(金) 00:59:44.09ID:???
次スレ
http://kohada.2ch.net/test/read.cgi/job/1337174486/
0995nobodyさん2012/06/22(金) 03:26:28.78ID:???
ume
0996nobodyさん2012/06/22(金) 03:34:32.19ID:???
print文とかで、二重引用符をでエスケープするのが面倒
0997nobodyさん2012/06/22(金) 05:35:29.53ID:???
うめましょう

【PHP】下らねぇ質問はID出して書き込みやがれ 120
http://kohada.2ch.net/test/read.cgi/php/1340275027/
0998nobodyさん2012/06/22(金) 05:36:34.85ID:???
次スレ

【PHP】下らねぇ質問はID出して書き込みやがれ 120
http://kohada.2ch.net/test/read.cgi/php/1340275027/
0999nobodyさん2012/06/22(金) 05:37:10.08ID:???
999!
1000nobodyさん2012/06/22(金) 05:38:33.43ID:???
1000なら、それでも1000ならきっと…
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。