PHP】下らねぇ質問はID出して書き込みやがれ 122
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/08/15(水) 01:52:15.26ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 121
http://kohada.2ch.net/test/read.cgi/php/1343219409/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
0233nobodyさん
2012/08/20(月) 13:11:43.86ID:???どうせいつものググレカス厨だろ?
帰れよ
0234nobodyさん
2012/08/20(月) 13:17:35.51ID:???0235nobodyさん
2012/08/20(月) 13:28:20.67ID:???0236nobodyさん
2012/08/20(月) 13:29:54.17ID:???0237nobodyさん
2012/08/20(月) 13:35:07.30ID:???which や find のコマンドで探せ
っつーかそれも考慮して>>230はphpinfo();やってみろと言ったのではないだろうか?
0238nobodyさん
2012/08/20(月) 13:36:56.62ID:???0241nobodyさん
2012/08/20(月) 15:44:11.57ID:xAaAstNOググるとこういうのがありました。
BEGIN TRANSACTION;
-- hogeをコピーしたテーブルを作る
CREATE TEMPORARY TABLE hoge_temp(a, b);
INSERT INTO hoge_temp SELECT * FROM hoge;
-- 古いhogeテーブルを削除
DROP TABLE hoge;
-- カラムを追加した新しいhogeテーブルを作る
CREATE TABLE hoge (a, b, c);
INSERT INTO hoge SELECT *,NULL FROM hoge_temp;
-- 古いhogeのコピーテーブルを削除する
DROP TABLE hoge_temp;
COMMIT;
でも新しいhogeテーブルを作ってinsert intoしようとしたところ、
カラムの数が一致してませんと出ました。
どうすればいいでしょうか?
0242nobodyさん
2012/08/20(月) 15:48:11.85ID:???0243nobodyさん
2012/08/20(月) 15:48:51.26ID:xAaAstNO0244nobodyさん
2012/08/20(月) 15:50:31.50ID:???そのやり方はデータ取っておいて作りなおしてるけど、
ALTER TABLE でも追加できるぜ
0245nobodyさん
2012/08/20(月) 15:52:40.56ID:???追加コマンドは
ALTER TABLE テーブル名 ADD COLUMN カラム名;
0247nobodyさん
2012/08/20(月) 15:56:04.96ID:???-- カラムを追加した新しいhogeテーブルを作る
この部分のINSERT INTOか
>INSERT INTO hoge SELECT *,NULL FROM hoge_temp
この * で以前のカラム、,NULLが追加したカラム用だろ。
INSERT INTO hoge (a,b) SELECT * FROM hoge_temp
でいけるかもね
0248nobodyさん
2012/08/20(月) 16:00:22.49ID:???0249nobodyさん
2012/08/20(月) 16:01:01.94ID:???0250nobodyさん
2012/08/20(月) 16:07:17.84ID:xAaAstNOsqlite2なのでalter tableは無理っす
>>247
でもダメでした。
突然ですが私の勘違いだと思います。
私は追加したカラムを末尾ではなく、中間に入れたかったのですが、
どうも末尾じゃないとうまくいかないっぽいです。
もう古いほうからselectで読み込んで変数にぶち込んで、
新しいほうのdbの対象の場所にぶち込むコード書いて済ませました
ありがとうございました。
0251nobodyさん
2012/08/20(月) 16:08:26.94ID:xAaAstNOカラムの追加が手軽に出来ないってどんなクソ仕様だよ
20分返せ
0252nobodyさん
2012/08/20(月) 16:09:18.68ID:???位置なんて関係ないけど
SELECT で * 使わないで全部書けばいいだけだろ。
SELECT a,NULL,b って書けばいい。
もうちょっと考えようぜ
0253nobodyさん
2012/08/20(月) 16:09:29.27ID:???初心者がSQLiteなんて使うからだろバカ
お前みたいなゆとりはMySQL使えって前にも指南してやっただろウンコ
0254nobodyさん
2012/08/20(月) 16:15:22.48ID:???あ。。。
なるほど!頭良いですね
ありがとうございました!
>>253
うるせー
もう離れられないんだよ
いまさらMYSQLのコードに書き直す時間なんかねー
0255nobodyさん
2012/08/20(月) 16:29:24.34ID:QVHysu23親ディレクトリを777にすればとりあえず行けるかなと思ったのですが無理でした
cgi版を使わないでセーフモードかかってる環境でどうにか作成できないでしょうか?
0256nobodyさん
2012/08/20(月) 16:42:32.18ID:???safe_mode = On 環境下でmkdir/rmdirの使用が制限されるのは、
親となるディレクトリの所有者のUIDとスクリプト実行者のUIDとが違う場合であってパーミッションは関係ない
system()からmkdir呼んでもダメならダメ
0257nobodyさん
2012/08/20(月) 16:43:15.81ID:24k4dPMJperl経由
http://www.xtrec.com/column/1206735656.html
ftp経由
http://blog.livedoor.jp/lionkid/archives/3191882.html
0258255
2012/08/20(月) 17:05:58.95ID:QVHysu23ファイルはパーミッションの設定で作れたので
ディレクトリもいけるかなと思ったのですが無理なんですね
systemから呼んでみたらエラーは出ないものの作成されなかったので無理みたいです
>>257
PerlもPHP-CGIと同様は環境に依存するのでNGで
自動作成が目的なのでftpもNGです
というわけで諦めたいと思います
ありがとうございました
0259nobodyさん
2012/08/20(月) 17:09:54.35ID:???ディレクトリ操作が超頻繁に呼ばれるんなら色々と不適当だろうけど実現は出来る
0260nobodyさん
2012/08/20(月) 17:11:25.21ID:???0261nobodyさん
2012/08/20(月) 17:15:43.27ID:???5.3.8でftp関連のオプション付けないでconfigureしてたけどRegistered PHP Streamsにftp入ってるぞ
0262nobodyさん
2012/08/21(火) 02:59:48.34ID:XWPs3HFYするってphpで可能ですか?
例えば、http://〜.zipに多数の人間がアクセスした時に
トラフィックを自動的に制限することをphpで可能でしょうか?
0264nobodyさん
2012/08/21(火) 03:26:01.00ID:???ダウンロード人数とファイルの容量などから計算して
許容範囲を超えたら一時的にダウンロードをできなくしたり
セッションを使って一度にダウンロードできる人数を制限することは可能
0265nobodyさん
2012/08/21(火) 04:10:58.19ID:M7Blza7t$array['huga']=2;
こういう連想配列があります。
後からとってきたfooとbarという文字列を、
$array['foo']=0;
$array['bar']=0;
といった具合にこの連想配列にくっつけたいです。
今は$a=array('foo','bar');をループでまわして$array[$i]=0;にしてます。
$aの構造次第では$array[$a]=0;とかもっと簡単にいけそうな気がするのです気のせいですか?
ちなみに$array[$a]だとIllegal offset type〜が出てしまうのでだめなんですが、
なんかいい方法あったら教えて下さい。
$array['foo']と直接つけることはできない(しない)ので、
直接かけというご指摘はなしの方向でお願いします。
0266nobodyさん
2012/08/21(火) 04:41:05.60ID:???何の疑問もなくhogeとか使ってるキチガイ。
嫌がらせのつもりじゃなかったらお前頭おかしいよ。
0268nobodyさん
2012/08/21(火) 10:07:40.97ID:???配列系の関数は腐るほどあるよ
>>267 とは全く逆の意味で○○かもしれないが、PHPはそういうものだと思って
リファレンスを常に読む。
とりあえず君が目を通すべきことはまさか知らないことはないと思うが、配列同士の加算について。
そして array_merge を調べてその違いを知る。
これを知らないとほとんどの有名どころのライブラリは読めない。
つぎに、array_fill_keys を ついでだから array_fill と同時に調べる。
あと、コールバック系の関数もたくさんあって、
同じ機能を自作するのはまさに車輪の再発名として無駄だから
まず暇があったら配列関数を全部試して、頭の隅にそういえばあんなのあったな程度に
引っかかるようにしておけ。
0269nobodyさん
2012/08/21(火) 10:38:51.28ID:hD35P2AHforeachでいいと思うけどな。
$arrayList = array("key1"=>"value1","key2"=>"value2");
$a=array('foo','bar');
$arrayList += array_fill_keys($a,0);
var_dump($arrayList);
0270265
2012/08/21(火) 11:02:38.87ID:M7Blza7tarray_mergeは試したのですがなんか結果が返ってきませんでした。
と思ったのですが、寝て頭がさえたら、
array_merge($array,$a)ではなく、$array=array_merge($array,$a)にしてないのが原因でし。た
配列系の関数はリファレンス渡しのイメージが強くついうっかりしてました。
>>269
まぁそうですよね。
一応パフォーマンス測りましたが、思ったよりボトルネックにはなってませんでした。
どうもありがとうございました。
0271nobodyさん
2012/08/21(火) 11:07:58.55ID:???0272nobodyさん
2012/08/21(火) 11:10:18.97ID:???( $a, 0 )
って空白開けるのがとっても気になる
読みづらくないんだろうか
0273nobodyさん
2012/08/21(火) 11:16:47.83ID:???0276nobodyさん
2012/08/21(火) 13:47:50.37ID:hD35P2AH0277nobodyさん
2012/08/21(火) 14:18:23.25ID:qLhbnQlN【PHPのバージョン】6.1
【連携ソフトウェア】
【質問内容】
正規表現での質問です。
文字列の最後がindex.*の場合のみreplaceしたいと思ってます。
preg_match("/index.*/i", $test)
とすることで出来たのですが、index.html?fuga=hogeといった場合も全て削除されてしまいます。
アドレスの最後がindex.〜場合だったのみreplaceするにはどのように変更すれば良いでしょうか?
0279nobodyさん
2012/08/21(火) 14:41:39.02ID:???0280nobodyさん
2012/08/21(火) 14:46:46.49ID:???index.html?fuga=hoge
でも、URLの最後がindex.〜だよ
クエリストリングは含めたくないということ?
変換前と変換後の希望する結果をいくつか例示したほうがいい
0282nobodyさん
2012/08/21(火) 15:08:01.19ID:qLhbnQlNもうしわけありません。
文字列の最後が
index.html index.htm index.js index.pl index.cgi index.php index.rb
といったファイル名のみで終了している場合のみその部分を削除したいと思います。
index.html/ index.html?fuga=hoge
といったファイル名と同じフォルダ名の場合やクエリストリングが
ある場合は削除せずにスルー出来ればと思っております。
0283nobodyさん
2012/08/21(火) 15:33:20.46ID:???index.*を消したいだけなら
$path="path/to/index.html?fuga=hoge";
echo preg_replace('/index\.\w+/','',$path);
0284nobodyさん
2012/08/21(火) 15:33:54.23ID:???0285nobodyさん
2012/08/21(火) 15:35:01.77ID:qLhbnQlNありがとうございます。
一歩近づきました。
フォルダの場合やクエリがある場合はスルー出来ればと思っております。
0287nobodyさん
2012/08/21(火) 15:50:30.26ID:????の前の部分を置換して、それに?の後の部分をくっつける
0288nobodyさん
2012/08/21(火) 16:04:13.08ID:???0289nobodyさん
2012/08/21(火) 16:04:55.14ID:???URLのファイル名部分を抜き出す、という定義でいいんでないの?
0290nobodyさん
2012/08/21(火) 16:07:54.36ID:qLhbnQlNありがとうございます。
こちらで思うような動作を確認できました。
確かに実際にこうして見て見るとなるほどと思います。
>>287
実は最初はそうしてたんですが、スマートに出来ないものかと思いまして。
あと拡張子の終わりをどう判断するか?というのがありましてクエリ以外にもスラッシュでフォルダといった場合やエンコードの関連などもありまして正規表現で出来ればと思っておりました。
みなさんご回答いただきありがとうございました。
0292nobodyさん
2012/08/21(火) 16:32:24.74ID:???0293nobodyさん
2012/08/21(火) 16:35:56.40ID:qLhbnQlN確かに不明なものが出てきた際は、正規表現ではなく個別に動作を変更できる分割のほうがいいかもしれないですね。
今後を見据えてどちらがいいのか検討してみます。
>>292
こんな関数あるの知りませんでした。
ちょっと試して見たいと思います。
0294nobodyさん
2012/08/21(火) 19:37:58.47ID:40TN/F5zテーブルの主キーはかならず id という名前で1つのみ存在
する状態でなければ
save()を実行してもだめなのでしょうか?
どうやっても思い通りの更新をする事ができないので
直接UPDATE分を書こうか迷っています。
しかし、そもそも折角cakeを使っているのでSQLの直書きだけは避けたいです。
@現在のテーブル
[ tb_hoge ]
user_id ( int )
emploied_id ( int )
user_name ( text )
0295nobodyさん
2012/08/21(火) 20:58:53.77ID:???0296nobodyさん
2012/08/21(火) 21:04:36.92ID:???http://kohada.2ch.net/test/read.cgi/php/1343015189/
0298nobodyさん
2012/08/21(火) 21:14:09.83ID:???http://kohada.2ch.net/test/read.cgi/job/1337174486/
0300nobodyさん
2012/08/21(火) 21:31:00.04ID:???http://anago.2ch.net/test/read.cgi/river/1343861550/
0301nobodyさん
2012/08/21(火) 22:51:31.69ID:???0302nobodyさん
2012/08/21(火) 23:57:26.73ID:ZlOByRzF0303nobodyさん
2012/08/22(水) 07:41:29.02ID:???ファイルをツリー形式で表示できるエディタかIDEってありますか?
0304nobodyさん
2012/08/22(水) 10:32:44.75ID:???0305nobodyさん
2012/08/22(水) 11:08:52.78ID:???PHP版にいる人の意見を効きたいからここに書き込んだっていうのに
0307nobodyさん
2012/08/23(木) 09:45:17.64ID:v9kKdUoC動的に変化するURLにアクセスして、その中身を取得したいのですが
0308nobodyさん
2012/08/23(木) 09:48:14.92ID:???HTML内から必要なテキストを抽出する
テキストを変数に格納する
寝る
0309nobodyさん
2012/08/23(木) 10:07:56.55ID:???簡単なテスト文章から練習するといい。
慣れたらライブラリ使うことも検討して
0310nobodyさん
2012/08/23(木) 10:43:56.80ID:???2.1でとったものを正規表現やDOM操作で
0311nobodyさん
2012/08/23(木) 10:56:51.48ID:1lZoqEZ8それ自体は納得いくのですが、結構探してもその手の記述がみつからないので気になりました
削除するファイルのパーミションは777で、
system関数はcatやlsなどの関数は問題なく実行できます
(ソース)
$cmd = "rm hoge.txt";
system($cmd,$ret);
echo "return_code[$ret]";
dump_var(unlink("hoge.txt"));
(表示)
return_code[1] bool(false)
0312nobodyさん
2012/08/23(木) 11:03:23.56ID:???CGIでやってみたらいいのではないか
0313311
2012/08/23(木) 12:10:33.07ID:CZBgvCvIすいません、単純にディレクトリの書き込み権限がありませんでした・・・
スレ汚し失礼しました
0314nobodyさん
2012/08/23(木) 23:57:17.04ID:???0315nobodyさん
2012/08/24(金) 19:39:21.42ID:6pGxEHfeファイルサイズの合計が8Mを超えたあたりでメールの送信に失敗してしまいます
php.iniのmemory_limitは256Mにしています
考えられる原因等ありましたら教えていただけないでしょうか?
0316nobodyさん
2012/08/24(金) 20:28:54.42ID:???仮に送れても相手に届かないことがある
0317nobodyさん
2012/08/24(金) 23:37:37.09ID:Uqq/1V6c「送信に失敗」とは具体的にどうなる?
再現コードは提示できる?
MTAは何?
0318nobodyさん
2012/08/25(土) 09:52:39.99ID:CCP03x17配列としてパースする方法を見かけますが、
これって厳密にはルール(W3C勧告)違反ですよね
原典
http://www.w3.org/TR/html4/types.html#type-name
和訳
http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/types.html#type-name
ということは、これらの記述方法を解釈しないW3C準拠のブラウザが
今後出てこないとも限らないということですよね。(現実問題はともかくとして)
でも、あまりこのことについて触れられた話題を聞いたことがありません。
(※HTTPプロトコル的には問題はないようです)
それか何か別の上位規約みたいなものがあって問題になっていないのか、
あるいはPHPがオレオレでやっちゃってて、ブラウザ側が柔軟に対応しているのか、
このあたりの情報(話題にしているブログやQ&Aでも結構です)
があれば何でもいいので教えてください。
0319nobodyさん
2012/08/25(土) 10:23:06.45ID:???0320nobodyさん
2012/08/25(土) 10:37:09.73ID:CCP03x17> IDトークンとNAMEトークンは、アルファベット([A-Za-z])で開始し、任意の数のアルファベット、数字、([0-9])、ハイフン(-)、アンダースコア(_)、コロン、(:)、ピリオド(.)のみで記述する必要がある。
とありますので、大括弧(ブレース、[])は使用すべきでない文字であると解釈しました。
0321nobodyさん
2012/08/25(土) 10:45:11.83ID:???hoge[0]をhoge-0にしてサーバ側でhoge[0]に変えてたけど
面倒だし気にしないことにした
0322nobodyさん
2012/08/25(土) 10:49:13.58ID:???0323nobodyさん
2012/08/25(土) 10:49:21.87ID:CCP03x17ありがとう。
0324nobodyさん
2012/08/25(土) 10:55:01.40ID:???0325nobodyさん
2012/08/25(土) 11:11:23.54ID:CCP03x170326nobodyさん
2012/08/25(土) 11:39:16.84ID:???0327nobodyさん
2012/08/25(土) 11:59:23.75ID:???name="ここはNAMEじゃなくてCDATAだから[]も使える"
value="ここもCDATA まあJSON入れるとすれば普通はここ">
違反になる例ってどんなのかなあ
0328nobodyさん
2012/08/25(土) 12:14:04.36ID:???> IDトークンとNAMEトークンは、アルファベット([A-Za-z])で開始し、任意の数のアルファベット、数字、([0-9])、ハイフン(-)、アンダースコア(_)、コロン、(:)、ピリオド(.)のみで記述する必要がある。
これにNAMEが入ってるのは何だ?
どこから持ってきたんだ?
0329nobodyさん
2012/08/25(土) 12:14:38.57ID:???属性じゃないのか
0330nobodyさん
2012/08/25(土) 13:15:38.49ID:???http://www.asahi-net.or.jp/~SD5A-UCD/rec-html401j/index/attributes.html
ここのページのTypeの列を見ろ
TypeがNAMEなのは、http-equivとmeta要素のnameだけ
inputとかのnameの中身はCDATA
0331nobodyさん
2012/08/25(土) 13:51:07.63ID:CCP03x17よくわかりました。私の解釈が間違っていました。
以下が制約となるということを私は理解しました。
CDATAは、文書文字集合中の任意の文字の列であり、文字実体をも含む。ユーザエージェントは、この属性値を次のように解釈する必要がある。
文字実体は文字で置き換える。
改行文字LFは無視する。
個々の改行文字CRあるいはタブ文字は、1つの空白文字で置き換える。
どうもありがとう。
0332nobodyさん
2012/08/26(日) 04:37:11.25ID:NUwGA8LGどうやってもエラーが出る。。。
0333nobodyさん
2012/08/26(日) 05:34:39.80ID:???concatしたい文字列を配列にいれて
array_mapあたりでPDO::quoteを適用
implodeでカンマ区切りで文字列結合
クエリ文字列に組み込む
in演算子とかでも同じ事が言える
■ このスレッドは過去ログ倉庫に格納されています