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

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

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

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

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

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0877nobodyさん2013/05/16(木) 13:26:22.85ID:IW38rAuX
>>876
すべてをいったん読み込むことなく
該当する場所のみを書き換えるのにざっくりという言葉を使ってしまいました。
申し訳ありません。

現在開発をしているところはコマンドを叩ける権限がないので
一旦すべてを読み込む以外でsedのように書き換える方法があればと思っておりました。
0878nobodyさん2013/05/16(木) 14:32:47.60ID:???
>>877
全部まとめて読むのが嫌なら一行ずつ読めばいいじゃない。
0879nobodyさん2013/05/16(木) 15:16:03.67ID:???
>>877
全てを読まないとどこを変更していいかわからないだろ。
sedだって全部読んでる。
0880nobodyさん2013/05/16(木) 16:59:41.66ID:???
うちのsedはきっちり書き換えてくれるよ。

ファイルの先頭に一文字追加したときに起こっていることについても勘違いしてそう。
0881nobodyさん2013/05/16(木) 17:21:26.79ID:???
sedが書き換えてくれないなんて誰も言ってませんが
0882nobodyさん2013/05/16(木) 17:31:23.47ID:???
ざっくり書き換えるsedをください
0883nobodyさん2013/05/16(木) 19:08:30.78ID:???
こっそり書き換えるsedなら
0884PHP神2013/05/16(木) 20:21:10.92ID:???
>>875
読む分と書く分をfopenしてwhileでfgetsして処理してfwrite
08858702013/05/16(木) 20:28:48.82ID:pZ2YUXzt
>>874
ご指摘ありがとうございます。
requireはMDB2.phpだけ指定しています。
MDB2_driverも呼んでみましたが変わらなかったです。
0886nobodyさん2013/05/16(木) 20:40:17.71ID:???
>>885
そのコードはどこからコピーしてきたの?
0887nobodyさん2013/05/16(木) 22:58:34.11ID:???
DB_FETCHMODE_ASSOC は  pear:DB 
MDB2なら MDB2_FETCHMODE_ASSOC 
08888702013/05/17(金) 18:10:51.64ID:GrS1oXzW
>>887
解決しました!!
マニュアルはちゃんと全部読めってことですね、猛省します・・・。
みなさまありがとうございました!!
0889nobodyさん2013/05/17(金) 19:57:20.25ID:???
いや別のモジュールのサンプルコードをコピペしてくんなよってことだよ
0890nobodyさん2013/05/17(金) 20:42:22.69ID:hjTCl7an
PHP勉強し始めて1か月くらいなんですけど、質問です。スレチだったらすいません
↓このプログラムの値を受け取るにはどのようにしたらいいのでしょうか?
<form action="sample10-2.php" method="get">
<?php
$items=array('a-1'=>'ガム', 'b-2'=>'チョコレート', 'c-3'=>'クッキー');
foreach($items as $itemKey => $itemValue){
print('<input type="checkbox" id="'.$itemKey.'" value="'.$itemKey.'" />
<label for="'.$itemKey.'">'.$itemValue.'</label>');
}
?>
<input type="submit" value="送信する" />
</form>
0891nobodyさん2013/05/17(金) 20:46:23.00ID:???
>>890
受取先でvar_dump($_GET)してみ
0892nobodyさん2013/05/17(金) 21:54:07.09ID:hjTCl7an
>>891さん
array(0) { } ってでてきました。
0893nobodyさん2013/05/17(金) 22:03:08.07ID:???
送信するってボタン押した?
08948902013/05/17(金) 22:06:06.39ID:hjTCl7an
押しました!受け取る側のプログラムの変数宣言とかもわからないのですがそのせいでしょうか?
0895nobodyさん2013/05/17(金) 22:27:59.48ID:jIpNXAl4
レンタルサーバーで
/public_htmlファルダに置いたa003.phpに対して
同じく/public_htmlファルダに置いたtest.shに
#!/usr/bin/php

cd ~/public_html
/usr/bin/php a003.php

と書いて、cronマネージャに
sh ~/public_html/test.sh
と書いて実行しましたが、a003.phpは動きません

sh ~/public_html/test.shは間違いない記述で
a003.phpは動作正常に動作しています。
test.shのphpの実行の間違えだと思うのですが、
教えてください。
0896nobodyさん2013/05/17(金) 22:37:03.62ID:???
実行権限とか、改行コードとか
0897nobodyさん2013/05/17(金) 22:41:22.82ID:???
>>894
getメソッドなら送信後のURLをコピペしてみ
0898nobodyさん2013/05/17(金) 22:47:24.26ID:jIpNXAl4
実行権限はa003.phpが777で
test.shが777にしています。
レンタルサーバーの会社に問い合わせると、
phpは動く。
cronのコマンドなどのサポートは一切できない
という返信が来ました
もう、さっぱりわかりません
08998902013/05/17(金) 22:48:23.15ID:hjTCl7an
>>897さん
URLは
http://localhost/sample10-2.phpになりました
0900nobodyさん2013/05/17(金) 22:49:31.26ID:???
>>898
なんでPHP宣言でシェルスクリプト動かそうとしてるのさ
0901nobodyさん2013/05/17(金) 22:57:18.66ID:???
>>899
もうソースうp
0902nobodyさん2013/05/17(金) 23:03:59.98ID:???
実行権限はa003.phpが777で
test.shが777にしています。
レンタルサーバーの会社に問い合わせると、
phpは動く。
cronのコマンドなどのサポートは一切できない
という返信が来ました
もう、さっぱりわかりません
0903nobodyさん2013/05/17(金) 23:05:37.84ID:???
大事なことなので二度書きました
0904nobodyさん2013/05/17(金) 23:06:17.51ID:jIpNXAl4
test.sh
cd ~/public_html
/usr/bin/php a003.php

こうですか
0905nobodyさん2013/05/17(金) 23:06:57.67ID:???
777にする意味がわからない
0906nobodyさん2013/05/17(金) 23:26:49.02ID:???
>>902

あとは php のパスかなぁ。確認した?たまに
/usr/local/bin/php
のところもあるよ
0907nobodyさん2013/05/17(金) 23:52:42.50ID:jIpNXAl4
phpのパス
モジュール版 パス: /usr/bin/php
となってました
fc2 レンタルサーバーLITE
0908nobodyさん2013/05/18(土) 00:22:14.10ID:???
> sh ~/public_html/test.shは間違いない記述で

これおかしくないか?
間違えてないって何で言えるの?
シェルを実行しているルートからのパスにしないとダメだろ
0909nobodyさん2013/05/18(土) 00:28:16.12ID:sKm+lEFL
cron コマンドに
sh ~/public_html/test.shと記述すると
public_htmlの下に置いたtest.sh
にecho "why" > ~/public_html/naze.txtと記述した時に
public_htmlの下にnaze.txtが生成されるので、
sh ~/public_html/test.shで正しいと判断しました。
09108902013/05/18(土) 04:48:14.04ID:8v+sotfd
>>901さん
受け取り側のプログラムのソースは
array(0) {
}
でした。
0911nobodyさん2013/05/18(土) 06:37:50.58ID:6ky0kPCm
どうしてこう頓珍漢な投稿しかできないかというと
どうやって表示するのかすら考えようとしないからなんだよね(笑)
0912nobodyさん2013/05/18(土) 09:06:33.17ID:???
>>910
phpファイルをうpしろ
0913nobodyさん2013/05/18(土) 09:32:33.84ID:???
仮にシェルが正しく動いて、 a003.php が実行されても、
当然ですがPOSTはされません。 
>>890のPHPは、 そのような文字列を書き出すだけのものです。
その文字列が sample10-2.php へPOSTするような処理をするhtmlだと
認識して実行できるのはブラウザだけです。
普通はPOSTするだけのプログラムをPHPで書きます。
自動でPOSTするようなjavascriptを入れてブラウザになんとか渡して実行できていたとしても
checkboxは、チェックされていないとPOST時にキーすら渡しません。
0914nobodyさん2013/05/18(土) 09:46:20.08ID:???
はい?
0915nobodyさん2013/05/18(土) 11:26:02.37ID:???
シェルの書き方違うじゃねぇかw

#! /usr/bin/sh
/usr/bin/php 引数

引数はスクリプトのパスだ
09168902013/05/18(土) 19:00:46.89ID:8v+sotfd
>>912さん
元のphpプログラムのソースは
<form action="sample10-2.php" method="get">
<dl>
<dt>商品</dt>
<dd>
<?php
$items=array('a-1'=>'ガム', 'b-2'=>'チョコレート', 'c-3'=>'クッキー');

foreach($items as $itemKey => $itemValue){
print('<input type="checkbox" id="'.$itemKey.'" value="'.$itemKey.'" />
<label for="'.$itemKey.'">'.$itemValue.'</label>');
}
?>
</dd>
</dl>
<input type="submit" value="送信する" />
</form>
です。受け取り側はわからないです
0917nobodyさん2013/05/18(土) 19:21:28.77ID:???
>>916
>>912
09188902013/05/18(土) 19:30:34.88ID:8v+sotfd
>>917さん
レンタルサーバにうpしました。
http://yumaru51.sitemix.jp/sample10.php
0919nobodyさん2013/05/18(土) 19:36:28.52ID:???
>>918
再現する送信側と受信側のPHPファイルをうpしろ。
0920nobodyさん2013/05/18(土) 19:41:33.17ID:???
まて
この対戦がおわったら
0921nobodyさん2013/05/18(土) 19:44:51.53ID:???
これ受け取り側の問題だわ
09228902013/05/18(土) 20:14:52.87ID:8v+sotfd
>>919さん
再現?PHPの勉強でブラウザ上に表示させたいだけなんです!
できたら受け取りのプログラムをどのように書けばいいか教えてください!!
0923nobodyさん2013/05/18(土) 20:26:02.35ID:???
>>922
<?php
print_r($_GET[);
?>
09248902013/05/18(土) 20:34:42.77ID:8v+sotfd
>>923さん
GETの後はvalue属性の値でいいんですか?その時は変数宣言はいりますか?
0925nobodyさん2013/05/18(土) 20:35:29.58ID:???
print_r($_GET);

こうだった
このまま打て
09268902013/05/18(土) 20:38:06.79ID:8v+sotfd
>>925さん
sample10-2.phpのほうで
Array ( ) て表示されてしまいました。
0927nobodyさん2013/05/18(土) 20:43:18.18ID:???
あーわかった
送信側idじゃなくてnameに変えろ
09288902013/05/18(土) 20:54:09.48ID:8v+sotfd
>>927さん
できました!!ありがとうございます!!
ちなみにvalueの値を表示するのにはどうしたらいいですか?
0929nobodyさん2013/05/18(土) 20:57:32.46ID:???
$_GETは配列だからkey指定してやればいい
09308902013/05/18(土) 21:12:47.65ID:8v+sotfd
>>929
全部をチェックしたらArray ( [a-1] => a-1 [b-2] => b-2 [c-3] => c-3 ) と表示されるんですけど
キーだけ表示するにはどうしたらいいですか?
0931nobodyさん2013/05/18(土) 21:15:38.41ID:???
nameとvalueが一緒だからややこしいな
この場合だと
echo $_GET['nameの値'];で値が出せる
a-1だったら
echo $_GET['a-1']な

チェックされてるものだけ全部表示したいなら
foreach($_GET as $value){
echo $value;
}

で全部出る
09328902013/05/18(土) 21:40:16.26ID:8v+sotfd
>>931さん
できました!ありがとうございました!!
0933nobodyさん2013/05/19(日) 20:07:23.39ID:5aKhdCp3
windows版のPHPで、デスクトップフォルダにファイルを出力させたいのですが、

$desktop_path = getenv("HOMEDRIVE").getenv("HOMEPATH");
$path = $desktop_path.'\test.txt';
file_put_contents($path,"hoge");

とやっても、デスクトップフォルダではなく、ユーザフォルダにファイルが出力されてしまいます
どうするのが正しいのでしょうか
0934nobodyさん2013/05/19(日) 20:08:40.67ID:???
apacheの管轄外にファイルなんて勝手に作れるの?
0935nobodyさん2013/05/19(日) 20:11:36.88ID:???
HOMEPATHがユーザフォルダなんだから当たり前じゃん
0936nobodyさん2013/05/19(日) 20:49:22.95ID:???
(゚o゚;) ハッ
ありがとうございました
0937nobodyさん2013/05/19(日) 21:00:06.37ID:???
ID出してな
0938nobodyさん2013/05/20(月) 02:57:49.64ID:???
>>934
chrootとまざってる?
0939nobodyさん2013/05/20(月) 13:38:53.01ID:???
>>937
いやならスルーしろ
0940nobodyさん2013/05/20(月) 16:54:47.19ID:???
スルーするならその質問は未解決ということになるが
0941nobodyさん2013/05/20(月) 17:02:05.31ID:???
いやまあ今回のは質問じゃないからな
質問者と同じ人ではあるだろうけど
09429332013/05/20(月) 22:46:02.99ID:???
>>936は偽物です。
よく分からないから説明してくださいクズ共。
0943nobodyさん2013/05/20(月) 22:51:36.66ID:???
>>942
ID
0944nobodyさん2013/05/21(火) 13:52:14.79ID:zVTd5q9v
ディレクトリにphp.iniを置いて設定を上書きする場合についてですが、
いろいろなサイトを見ると、すべてのディレクトリに置く必要があると書いてあります
一般的なフレームワークのように、
ルートに置かれているindex.phpが、サブディレクトリの各ファイルを読み込んでいる場合、
サブディレクトリにも置く必要があるのでしょうか?
0945nobodyさん2013/05/21(火) 14:07:29.21ID:???
>>944
いろいろなサイトをググるより、とりあえず公式
http://www.php.net/manual/ja/configuration.file.per-user.php
0946nobodyさん2013/05/22(水) 03:02:39.01ID:bg0nnEgA
不可解なエラーが出ます。

mb_regex_encoding("UTF-8");
$str = "てすと";

$regex = '(\xEE\x80\x80)|(\xEE\x80\x81)';
$array = mb_split($regex,$str);
→エラーなし

$regex = '\xEE\x80[\x80-\x81]';
$array = mb_split($regex,$str);
→Warning: mb_split(): mbregex compile err: too short multibyte code string

正規表現が表わすものは同じなのに、後の例では警告が出ます。
理由は何でしょう?
0947nobodyさん2013/05/22(水) 07:03:42.22ID:+OY2v0pP
同じじゃねえよ
# 戻り値と後方参照は別として
$regex = '(\xEE\x80\x80)|(\xEE\x80\x81)';
 →$regex = '\xEE\x80\x80|\xEE\x80\x81'; と同一
$regex = '\xEE\x80[\x80-\x81]';
 →$regex = '(\xEE\x80\x80|\xEE\x80\x81)'; と同一
0948nobodyさん2013/05/22(水) 07:08:05.64ID:s3ucw8IQ
ランキングシステムのような物を趣味で勉強兼ねて作ろうと思ってるのですが
人気メーターのような画像を生成したいと思っており

メーターのmaxValueを100と設定した場合
http://www.example.com/meterimg.php?value=100
上記URLでメーターがMAXの画像が表示され

http://www.example.com/meterimg.php?value=50
上記URLでメーターが半分の画像が表示され

こんな感じで画像生成する方法って可能でしょうか?
可能であれば参考になりそうな記事等教えて貰えれば幸いです。
またこのような手法をなんというかも知りたいです。

よろしくお願いします。
0949nobodyさん2013/05/22(水) 07:25:19.91ID:???
>>948
どんな画像を生成したいかによるが生成自体はできる。
ただ、それなら10個ほど画像用意したほうが毎回生成するよりいいと思う。
php 画像生成 gd でぐぐればでてくる。
0950nobodyさん2013/05/22(水) 09:05:15.52ID:???
10刻みなんて誰も言ってないだろ
0951nobodyさん2013/05/22(水) 09:29:22.30ID:???
divの背景に画像入れて幅指定のスタイルをPHPで書き出せばいいだろ。
0952nobodyさん2013/05/22(水) 09:48:53.15ID:s3ucw8IQ
>>949
ありがとうございます。
自分でも画像を10個程度用意してやろうかと思ったのですが
出来ればmaxvalueなる値を設定出来るようにしたかったので
この方法が出来ればなぁと質問させて頂きました

ご提言頂いたphp 画像生成 gdで調べてみます。

ありがとうございました。
0953nobodyさん2013/05/22(水) 15:14:10.07ID:bg0nnEgA
>>947
ありがとうございました
同じになるように、エラーが出ない方を
$regex = '((\xEE\x80\x80)|(\xEE\x80\x81))';
としても、エラーは出ません。
[\x80-\x81]の展開部分に何か問題があるようです
mbregex compile err: too short multibyte code string
で検索しても、情報がほとんどなく困っています
0954nobodyさん2013/05/22(水) 16:30:20.92ID:???
>>952
ロールオーバーでよくね?
0955nobodyさん2013/05/22(水) 16:50:09.27ID:???
鬼車では、そういう記述が出来ないようです。
[\xEE\x80\x80-\xEE\x80\x81] って書いてください。
0956nobodyさん2013/05/22(水) 17:10:09.02ID:bg0nnEgA
rubyの人が同じような現象を書いていたので、なにかそのへんかと思っていたのですが、そういうことですか
ありがとうございました。
0957nobodyさん2013/05/23(木) 10:07:22.17ID:???
>>948
>>951じゃないけど、この人の言うやり方はかなり効率的だよ。
PHP-gdや固定的な画像だけでなんとかするというよりも
cssやjQueryを併用してブラウザ側に視覚的な処理を持たせることも
考えたほうが、構築も負荷も楽になるじぇ。
0958nobodyさん2013/05/23(木) 15:08:16.74ID:???
グラフが保存できないという致命的な問題が
0959nobodyさん2013/05/23(木) 19:09:57.40ID:C+sPY2uV
自分の要件すらわからないという致命的な問題があるな、うん
0960nobodyさん2013/05/24(金) 03:03:29.49ID:???
なんでcanvas使おうって話にならないんだ?ここだけ何年も前で止まってんの?
0961nobodyさん2013/05/24(金) 07:40:55.82ID:???
なんでcanvas使おうって話になるの?
0962nobodyさん2013/05/24(金) 07:43:06.74ID:???
社会性がないワガガマンだからw
0963nobodyさん2013/05/24(金) 10:01:17.06ID:N0RBDP8p
【OS名】CentOS 6.4
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL
【質問内容】
配列について質問です。

$_POST['num1']
$_POST['num2']
$_POST['num3']

と配列があるのですが、この個数が不確定な状態です。
num1 〜 num3 までのときもあれば num1 〜 num78 まであるときもあります。
現在は1個ずつnum*があるかどうかを確認してから取り出しているのですが
num*の*の部分を正規表現みたいな感じで一気に抜き出すようなことはできないでしょうか?

もしくは効率の良い方法などあればご教授いただけないでしょうか。
0964nobodyさん2013/05/24(金) 11:44:27.09ID:???
>>963
foreach ($_POST as $key => $val) { ... }
0965nobodyさん2013/05/24(金) 15:49:43.00ID:???
$results = array();
array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } });
0966nobodyさん2013/05/24(金) 15:51:14.48ID:???
間違えた

$results = array();
array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, $_POST);

これで $results に数字の部分だけが配列になって入ってるはず。
0967nobodyさん2013/05/24(金) 15:52:54.06ID:???
また間違えた

間違えた

$results = array();
array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST));

何やってんだおれ
0968nobodyさん2013/05/24(金) 16:16:22.06ID:???
>>965-967
無理に回答しなくて大丈夫ですよ
0969nobodyさん2013/05/24(金) 16:21:49.71ID:???
無理やり一行にするなって何回言ったらわかるんだ????????????????????
0970nobodyさん2013/05/24(金) 16:22:38.74ID:???
ifを1行に書く意味がわかんね
何のための三項演算子だ
0971nobodyさん2013/05/24(金) 16:25:56.38ID:???
$results = array(); array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST));
0972nobodyさん2013/05/24(金) 16:27:20.22ID:???
$results = []; array_map(function($element) use ($results) { if(preg_match('/^num([0-9]+)$/', $element, $m)) { $results[] = $m[1]; } }, array_keys($_POST));
0973nobodyさん2013/05/24(金) 16:28:13.75ID:???
$r = []; array_map(function($e) use ($r) { if(preg_match('/^num([0-9]+)$/', $e, $m)) { $r[] = $m[1]; } }, array_keys($_POST));
0974nobodyさん2013/05/24(金) 17:37:29.91ID:tSKlADWF
ここでいいのかわからんですが
鯖がcentosで空メールのシステムを作っているのですが、
aliecesにパイプ処理で受信してからphpに処理を引き渡してます

ウェブサーバーでphpを動かす時はapacheですが、こんな風にパイプで
phpに処理させるときって、そのphpファイルを実行するユーザは誰なんでしょう
0975nobodyさん2013/05/24(金) 17:39:49.26ID:???
こういう使い方をしたいときは、レキシカル変数を参照で渡しましょう。


for($i = 1 ; $i<=78 ;$i++)
if (isset($_POST['num'.$i]))
$r[$i] = $_POST['num'.$i];

でいいんじゃねーのと思うがね。
0976nobodyさん2013/05/24(金) 17:59:56.83ID:???
>>974
こんな風にというのがどんな風なのかわからないが、コマンドラインでphpを実行するのならそのユーザ、
cronもそのユーザ、apacheで実行されるphpでコマンドを起動するなら、apache。
レス数が950を超えています。1000を超えると書き込みができなくなります。