【PHP】下らねぇ質問はここに書き込みやがれ 56
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/11(木) 17:55:41ID:uObe69hrPHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 55
http://pc11.2ch.net/test/read.cgi/php/1191058556/
◆質問する時の注意
・ sage進行(メール欄にsageと記入すること)「sage進行」とはスレを目立つ上部に上げないことによって、荒らしが発見できないようにすることです
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・ 書き込むときには、「公式マニュアル、リファレンス本は読みました」と明記すること
(でないと、公式マニュアル読めと煽られます)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
・質問者が「公式マニュアル読んだ」と書いていないからといって、
公式マニュアルに書いてもいないのに、公式マニュアルよめと適当なことを言わないこと。
質問者は公式マニュアルを読んでいるかもしれない。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0012nobodyさん
2007/10/11(木) 21:10:35ID:???0013nobodyさん
2007/10/11(木) 21:13:48ID:???0014nobodyさん
2007/10/11(木) 22:24:14ID:Y4cbxz38中の人的には
どこまで心を許すかは場合によるけどな
0015nobodyさん
2007/10/11(木) 22:41:21ID:???0016nobodyさん
2007/10/11(木) 23:30:12ID:???構造は理解でき、フロムスクラッチから作った場合、相手のコピーライトははずしてもいいんですか?
0019nobodyさん
2007/10/12(金) 00:06:07ID:2uLJDe9D君を育ててくれたスクリプト制作者を足蹴にする行為
0020nobodyさん
2007/10/12(金) 00:08:38ID:???自分で作ってみようと思ったが、これは無理だwwww
0021nobodyさん
2007/10/12(金) 00:30:14ID:???法律的にはどうなのか全く知らないけど
オープンソースのスクリプト言語で著作権もコピーライトもくそもない気がする。
それほど独創的なコードがあるわけでもないし、
そんなもん主張されても、同じ処理をするものって
根本的な処理は基本的に似てくるんじゃないの?
アルゴリズムだって、例えばデザインパターンを使っていたって、偉大な先人のアイデアを
真似して、いただいて作ってるんしょ?
16のケースはもう原形をとどめていなさそうだし問題ないんじゃん?
あくまで法律は知らんけど・・
心情的に・・・
0022nobodyさん
2007/10/12(金) 00:33:06ID:???俺はウダウダ言うなら公開してんじゃねーよGPL教のクズがと思ってるけどな
0023nobodyさん
2007/10/12(金) 01:01:44ID:???そんなことPGオタクで経営感覚ゼロの人間には、ワケ分からんだろうけどなw
0024nobodyさん
2007/10/12(金) 01:03:50ID:???0025nobodyさん
2007/10/12(金) 01:04:46ID:???0026nobodyさん
2007/10/12(金) 01:12:13ID:???逆については検索でたくさんヒットするけど、上記はヒットしなかったので教えて下さい。
目的は特定のフォルダでのみ拡張子htmlでphpが動作しない環境を構築したい為です(大半のフォルダでは拡張子htmlでphpの実行を許可したいです)。
よろしくお願いします。
0027nobodyさん
2007/10/12(金) 01:29:53ID:???あとは.htaccessにphp実行不許可のオプションを書けば上書きされる
0029nobodyさん
2007/10/12(金) 03:16:18ID:???003026
2007/10/12(金) 09:09:50ID:???有難う御座いました
0031nobodyさん
2007/10/12(金) 10:50:50ID:???0032nobodyさん
2007/10/12(金) 10:54:13ID:???0034nobodyさん
2007/10/12(金) 13:02:38ID:SObbbYi1変数の中の「行」の数を数えたいのですが
特定の文字の出現回数を返すような関数
もしくは良くあるサンプルなどはあるのでしょうか?
0035nobodyさん
2007/10/12(金) 13:04:01ID:???型は?
配列ならcount($str)
改行区切りならcount(explode(array("\r\n","\r","\n"), $str))
0036nobodyさん
2007/10/12(金) 13:14:58ID:???>>35もありだが
STRING型なら普通はpreg_match_allで改行コードの
正規表現書いて使うと思う
0037nobodyさん
2007/10/12(金) 13:52:19ID:JDHSb9UChttp://xxx.example.com/でアクセスできるようにしたいのですが、
この質問はどこですればいいのでしたっけ?
0039nobodyさん
2007/10/12(金) 13:58:18ID:JDHSb9UCん〜、PHP関係じゃなくてApache関係で
htaccess使ってそういう方法があったんです。
http://xxx.example.com/自体のURLがもともと無効なんですけど、
何かの設定でhttp://example.com/xxx/をhttp://xxx.example.com/にできたんです
0040nobodyさん
2007/10/12(金) 14:01:22ID:???ないよw
そもそもHTTPレベルの話であって、ApacheはTCP/IPレベルの制御しかできない。
Apacheでそうなったというのは、ApacheのバグかルーターかDNSサーバーが異常をきたしていたとしか考えられない。
0041nobodyさん
2007/10/12(金) 14:03:52ID:JDHSb9UCどうやらURL直下しか無理みたいです。
サブドメインの設定はまた別で必要なのですね。
有難うございました。
0042nobodyさん
2007/10/12(金) 14:06:06ID:???つ 【PHP】下らねぇ質問はここに書き込みやがれ 56
つ 【PHP】下らねぇ質問はここに書き込みやがれ 56
つ 【PHP】下らねぇ質問はここに書き込みやがれ 56
つ 【PHP】下らねぇ質問はここに書き込みやがれ 56
つ 【PHP】下らねぇ質問はここに書き込みやがれ 56
0044nobodyさん
2007/10/12(金) 14:33:18ID:???誰だよ、お前。答えたのは俺様だろうが。
それからツリー構造はDBでも出来るとかいってんじゃねーぞ。
DBとの接続処理も含めたパフォーマンスを考慮してメモリー上でツリー構造にすればいい、
って言っているのに、DBでも出来るとか、意味不明だよ。
もっと多角的な面からどの技術を使うのが最適解になるのか、よく考えろ。
0045nobodyさん
2007/10/12(金) 14:45:45ID:???0047nobodyさん
2007/10/12(金) 16:17:11ID:JDHSb9UC0050nobodyさん
2007/10/12(金) 16:32:39ID:JDHSb9UCサンクス
何か使い方が間違っていたみたいでした。
class Hogehoge {
public $aaa;
public $bbb;
}
$obj = new Hogehoge('xxx','xxx');
とすると、勝手に$objの中に
$obj['aaa'] = NULL
$obj['bbb'] = NULL
ができているのですが、仕様でしょうか?
また、unsetなどで削除しても大丈夫でしょうか?
0053nobodyさん
2007/10/12(金) 16:47:25ID:???PHPでのクラスの実装が連想配列みたいな仕組みになってるだけ。
$obj['aaa']がpublic $aaaの実体ってこった。
別にunsetしたきゃしてもいいが、メンバ変数を使えばまた再生成されるし、
メンバ変数に値を格納した状態でunsetしちゃったら値も消えちゃうぞ。
>>51
は?
0054nobodyさん
2007/10/12(金) 16:49:58ID:JDHSb9UC今>>51で頑張って探していたのですが、サッパリでした・・・
コンストラクトで最初にunsetしてから格納してみたところ大丈夫のようでした。
0056nobodyさん
2007/10/12(金) 16:58:45ID:JDHSb9UCpublic $lat;
public $lon;
function __construct ($lat = FALSE, $lon = FALSE)
{
unset($this->lat);
unset($this->lon);
$this->lat = $lat;
$this->lon = $lon;
このような感じで入れ替えてますが、まずいですかね・・・汗
0058nobodyさん
2007/10/12(金) 17:33:51ID:???public $lat;
public $lon;
↓
private $lat;
private $lon;
0059nobodyさん
2007/10/12(金) 19:16:36ID:???0060nobodyさん
2007/10/12(金) 23:20:32ID:cR3DAsP9echo Example();
echo PHP();
function Example(){
}
function PHP(){
}
}
このようにfunction内のfunctionをfuntionで呼び出すようなことはできないのでしょうか?
すごく簡単な内容なのですが、クラス化したほうが良いのでしょうか。
0061nobodyさん
2007/10/12(金) 23:37:49ID:???アドバイスを参考に書いてみましたが、結果はNGでした。
試した事は下記です。
httpd.confの記述(一部抜粋)
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
AddType application/x-httpd-php .php .html
/var/www/html/.htaccessの記述
AddType application/x-httpd-php .php
上記の記述では/var/www/html/test.htmlファイルでphpinfoが実行出来てしまいました。
そのため、上記のどこに問題があるか(多分>>27のphp実行不許可の記述の仕方だと思いますが)ご指定いただければと思います。
0063nobodyさん
2007/10/13(土) 01:23:48ID:???function内のfunctionをPHPにおいて呼び出すのはあまり意味がないのでは?
そのfunctionを外に出してもそんなに問題ないでしょう。
>>61
最初に許可しないでディレクトリごとにphpファイルとして解釈するものを加えればいいと思う。
.htaccessは重いので、なるべく使わないに越したことはないのですが。
0064nobodyさん
2007/10/13(土) 01:36:04ID:???無駄にOOでないクラス化するよりよっぽど有用
0065nobodyさん
2007/10/13(土) 01:59:08ID:???分かってない人が書いたら、関数内関数も(普通より余計に)スパゲッチーソースになるのでわ?
オブジェクト指向の思想を理解してるなら、素直にクラス化した方がいいと思う。
0066nobodyさん
2007/10/13(土) 04:49:24ID:???可能だけどfunctionの呼び出しより先に定義しなきゃ。
クラスはインスタンス→中身のメソッド定義全部実行→それからコンストラクタ実行
って順番で動くけど、そのHogeHoge()は頭から順に実行されるんだから。
あと、function内functionも1度定義した時点でグローバルな関数になることさえ
気をつければ別にそういう使い方はありだよ。
0067nobodyさん
2007/10/13(土) 04:52:41ID:???やってることはぶっちゃけ
if(条件) {
function a() {処理1}
} else {
function a() {処理2}
}
にHogeHogeって名前付けてるだけだと思うんだけどね、これ。
そういう意図でやってるなら別にクラス化するほどのもんでもない。
0068nobodyさん
2007/10/13(土) 07:28:36ID:JyEmfHgtPEARのXML_Serializerで、連想配列からXMLを出力するとき
一つのノードに複数の属性(Attribute)を設定して、XMLにシリアライズすると
設定した属性が、その属性の名前で昇順に並び変わって出力されてしまうのですが、
これを並び変わらないように設定することは出来ないでしょうか?
自分としては連想配列に代入した順番に出力されて欲しいのですが・・・・・・。
何か良い方法を知っていたら教えてください。
ちなみに環境はWindowsのxampp1.6.4です。
006968
2007/10/13(土) 07:42:44ID:???上のレスは思いっきりageてしまいました、すみません。
007068
2007/10/13(土) 07:48:20ID:???お騒がせしてすみませんでした。
007268
2007/10/13(土) 08:17:33ID:JyEmfHgt>>70
PEARのドキュメントに質問の答えとなるような項目があるということですか?
一応目を通してみたのですが、まだBeta版だからか、XML_Serializerに関しては完全なオプションのリストに記載すら無かったのですが・・・・・・
ほかに詳細な内容が載っている記事ということで
http://www.sitepoint.com/article/xml-php-pear-xml_serializer
あたりも読んでみたのですが、質問の答えとなるような記述は無かったように思います。
(読み逃しがあったらすみません。)
もし「昇順に並び替えない」という設定が無いまでも、何か良い問題の解消方法を知っている方が居れば
教えていただきたいと思っています。
恥ずかしながら自分では「出力されたXMLを文字列として処理し、該当箇所を全て並び替え」という、
かなり手間のかかりそうな方法くらいしか思いつかないもので・・・・・・
どうかよろしくお願いします。
0073nobodyさん
2007/10/13(土) 08:59:16ID:???0074nobodyさん
2007/10/13(土) 09:34:44ID:???XMLなんだから、順序に依存するような仕組みではだめだろ。
0075nobodyさん
2007/10/13(土) 09:46:33ID:HZ6cGKF0xamlスレってないのでしょうか?。
0076nobodyさん
2007/10/13(土) 09:57:05ID:???フォルダ数が多く1つのフォルダでのみ.htmlでphpの実行を許可しないようにしたい(それ以外のフォルダは.htmlでphpの実行を許可したい)です。
そのため>>26に書いたように、デフォルトでは.htmlでphpの実行を許可し、
特定のフォルダのみ.htmlでphpの実行を許可しないように出来れば一番作業量が少なく楽かなと思ったので質問しました。
最初に許可しないで.htaccessで制御出来る事は確認済みですが、
.htaccessを作らなければいけない量の多さに作業する事を躊躇している所です。
0077nobodyさん
2007/10/13(土) 10:29:00ID:???検索エンジン用に拡張子を選ぶという話は結構あるけど・・・
何がしたいのかよくわからない
PHPを記述しなければ良いだけのような気がするし第三者にアップロードさせるなら
その時点でチェックすれば良いだけの話
拡張子が同一である限り判別材料は必要でどちらにしても負荷はかかる
0078nobodyさん
2007/10/13(土) 11:14:13ID:Vu/tyyyNhttp://fanblogs.jp/snrpro/
0079nobodyさん
2007/10/13(土) 11:59:23ID:brAyXwH5どうやって、new DB()をしないでオブジェクト化しているのですか?
008079
2007/10/13(土) 12:09:56ID:brAyXwH5(果たして解決しているどうかも少しなぞですが)
if(!is_object($this)){
$obj = new Hoge();
}else{
$obj = $this;
unset($this);
}
return $obj;
0081nobodyさん
2007/10/13(土) 12:39:21ID:Qhys5rK+ログはファイルで管理したいと考えているのですが、
今考えてるのはログファイルを一日単位で分けようと考えてるのですが、
セーフモードの場合だとあらかじめファイルを用意しなければならないのがツライです。
ログファイルは一個で管理するのが妥当でしょうか?
0082nobodyさん
2007/10/13(土) 13:27:08ID:???まぁ、普通は分けるんじゃないの。
何でセーフモードを意識しなきゃいけなくなったのかがちと謎だけど、
日が変わる直前にcronで他のスクリプトとか使ってファイル生成させとけば?
一般に、ログ吐く側は単一ファイルにそのまま吐き続けさせといて
logrotateとか使ってファイル切り替えるもんだと思うけど。
0084nobodyさん
2007/10/13(土) 14:10:59ID:???開発環境での話です。
だから負荷は気にしてません
要は同じ階層のフォルダ内に
1. Aフォルダ(.htmlでphp実行可能)、この手のフォルダが複数あり
2. Bフォルダ(.htmlでphp実行不可能)、この手のフォルダは一つのみ
という環境を作りたいのですが、大多数が1に該当する以上、
1をデフォルトの動作とし、例外的な2に対し別途設定を施す事で環境を構築したいと思っています。
0085nobodyさん
2007/10/13(土) 14:15:40ID:???Apacheのモジュール版PHPでなら簡単にできるよ
動作させたくないディレクトリのhtaccessに
php_flag engine off
と書けば良い
>>80
「デザインパターン シングルトン」
をグーグルさんで検索してみると良い
0087nobodyさん
2007/10/13(土) 14:24:32ID:???>>>80
>「デザインパターン シングルトン」
前にもあったけど、phpはメモリーを共有できないから、
シングルトンは使えないよ。javaなら大丈夫だけどね。
0088nobodyさん
2007/10/13(土) 14:29:19ID:???0090nobodyさん
2007/10/13(土) 14:45:50ID:???規模のでかさにもよるが・・・
メモリ空間の共有も前ツリー構造の人が
メモリ空間共有用の関数がどれかを書いてたし・・・・
0091nobodyさん
2007/10/13(土) 14:47:06ID:???試してみましたが駄目でした。
多分モジュール版PHPを使用していないのだと思いますが、
モジュール版が何か分かりませんでした。
>>86
言っている意味が分からないのですが。
開発環境は1つのサーバーで行っています
一方外部公開用のサーバーは複数あります。
そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。
そのため、開発環境のデフォルトは拡張子htmlでphpを動作可能にし、
特定のフォルダのみ、外部公開用のサーバーの仕様にあわせ拡張子htmlでphpを動作不可能にしたいと思っています。
理由はこれが開発環境の変更点が最も少なく、外部公開用のサーバーにそのまま適用できると思われる為です。
0092nobodyさん
2007/10/13(土) 14:56:42ID:???> 多分モジュール版PHPを使用していないのだと思いますが、
> モジュール版が何か分かりませんでした。
.htaccessでPHPの設定をできるやつがモジュール版で一般的なPHPのこと。
それ以外はCGI版かコマンドライン版。
しかしengine offにしたら.htmlだけじゃなく.phpでもPHP実行できなくなるような…
> そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。
環境を実機と可能な限り合わせたい、という意図は分かるんだけど、
あくまで自分の開発環境の話なら、単に.htmlのファイルの中に
PHPコードを入れないだけでもいいんじゃないの?
他のユーザに使わせたくない、って話ならともかく。
それとも、PHPの実行をさせないだけで.html中にPHPコードは埋め込んじゃうの?
0093nobodyさん
2007/10/13(土) 15:07:41ID:???>そしてそのうち一つのサーバーでは拡張子htmlでphpが使えません。
中途半端な説明ばかりしているからややこしくなるんだ。
これに尽きるんだろ。
.htaccessが使えるなら.htaccessをトップディレクトリにおいけば良いだけ、
httpd.confが弄れるなら弄れば良いだけ。両方だめなら無理だから諦めろ。
意地でもやるなら拡張子とスクリプトの内容をまとめて書きかえれるような
ソフトを自作して書き換えるしかないだろう。
0094nobodyさん
2007/10/13(土) 15:08:18ID:???ありがとうございます。
となると私の環境はモジュール版のはずですが、何故phpが動いてしまうんだろう?
それと今回の件だけに限って言えば、そのフォルダでは拡張子php自体使用していないので、
特定のフォルダ直下ではphpが実行できなくなってもかまわないです。
後、本件の目的はミス防止の為です。
他の開発で使用したものを多数流用している為、phpが間違って混入してしまう可能性があるからです。
ご指摘のとおり、入れなければ良いのですが、上記のような過程で間違って入れてしまい、
それを本番に上げて始めて気づいてあわてると言うミスを未然に防ぐ環境を構築したいと思っています。
0095nobodyさん
2007/10/13(土) 15:14:22ID:???そのレンタルサーバーでは.htaccessが使用不可です。
またhttpd.confは弄れません。
ただし自分の開発環境はhttpd.confも.htaccessも使用可能です。
現状開発環境では、httpd.confで一時的に拡張子htmlでphpが実行出来ないようにし、
拡張子htmlでphpが実行できないといけないフォルダ毎に.htaccessを設置していますが、
可能であれば、httpd.confでは拡張子htmlでphpが実行出来るようにし、
特定のフォルダでのみ.htaccessで拡張子htmlでphpを実行できないようにするのが一番スマートかなと思いました。
0096nobodyさん
2007/10/13(土) 15:14:23ID:???web上で値を使う人がその都度変えてもいけるようなものが作りたいんだけど…
0097nobodyさん
2007/10/13(土) 15:14:27ID:???この辺が原因かも。
http://slashdot.jp/~elf2000/journal/105773
> なんてこった…apache2でphp_flagって使えないの?
> php_flag engine off
に対するコメント
> VirtualHostディレクティブ使ってません?
> 使ってたらその中にDirectoryディレクティブを書いてやらないと認識しないようです。
0102nobodyさん
2007/10/13(土) 15:31:23ID:???アクセスしないファイルが紛れ込めばどちらにしろわからない。
0104nobodyさん
2007/10/13(土) 15:42:40ID:???レスありがとうございます。
>>85の記述で(一応)思い通りの動作が出来ました。
理由は>>98でした
こちらのミスです。スイマセン。
今環境をいろいろ触っている中で、そのフォルダの.htaccess使えるようにするのを忘れてましたorz
ただ、>>92に記述されているように、engine offにすると.phpでもphpが実行できなくなりました。
今回はこれで大丈夫なのですが、このレンタルサーバーにメールフォームをつけたいとかの要望があると、
このままでは問題があるので、engine off以外の対応法があればそちらを適用してみたいと思います。
>>102
まあそうなんだけど、人間ミスするのは避けられないと思うから、可能性を低くする事だけはしておきたいと思ってね。
0105nobodyさん
2007/10/13(土) 15:48:08ID:???0107nobodyさん
2007/10/13(土) 15:53:19ID:???スレ違いをここまで粘りこむ自分勝手さにこれ以上付き合う事もないだろ。
0108nobodyさん
2007/10/13(土) 16:04:07ID:???*.phpの時以外はengin offにできるように書けばいいだけだよ
あとはapacheの設定のconfファイルの書き方だからスレ違い
0109nobodyさん
2007/10/13(土) 16:14:15ID:c/lxCBKk0110nobodyさん
2007/10/13(土) 16:15:31ID:Qhys5rK+ありがとうございます。いろんなレンタルサーバで動かせるようにしたいと思いまして、
ファイルをわけることにします。
0111nobodyさん
2007/10/13(土) 16:17:48ID:???すまん、すれ違いだったのね
これ以上の事は別スレ探して聞いてきます。
アドバイスいただいた皆さんどうもです。
0112nobodyさん
2007/10/13(土) 16:18:12ID:Qhys5rK+SSIを使わず、jsで取得したものをPHPに渡したいと思います。
しかし、jsで取得したデータをPHPに渡す方法がわかりません。
どなたかヒントをいただけないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています