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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/15(月) 19:23:06ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

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

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2010/02/15(月) 19:23:49ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/
【PHP】下らねぇ質問はID出して書き込みやがれ 90
http://pc11.2ch.net/test/read.cgi/php/1258187482/
【PHP】下らねぇ質問はID出して書き込みやがれ 89
http://pc11.2ch.net/test/read.cgi/php/1255263534/
【PHP】下らねぇ質問はID出して書き込みやがれ 88
http://pc11.2ch.net/test/read.cgi/php/1253061577/
【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
【PHP】下らねぇ質問はID出して書き込みやがれ 86
http://pc11.2ch.net/test/read.cgi/php/1249042741/
【PHP】下らねぇ質問はID出して書き込みやがれ 85
http://pc11.2ch.net/test/read.cgi/php/1245074032/
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
【PHP】下らねぇ質問はID出して書き込みやがれ 83
http://pc11.2ch.net/test/read.cgi/php/1238958898/
【PHP】下らねぇ質問はID出して書き込みやがれ 82
http://pc11.2ch.net/test/read.cgi/php/1236532468/
【PHP】下らねぇ質問はID出して書き込みやがれ 81
http://pc11.2ch.net/test/read.cgi/php/1234958956/
0003nobodyさん2010/02/15(月) 19:24:31ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/
■Smartyマニュアル  http://www.smarty.net/manual/ja/

(以下英語)
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smarty       http://www.smarty.net
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2010/02/15(月) 19:25:17ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2010/02/15(月) 19:26:38ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
00068622010/02/15(月) 20:10:24ID:tuS5GRdx
前スレの862です
解決したのであとはこのブログは放置に入ります
もう既にgoogleで検索ヒットするみたいですが更新は終わります

http://hellosekaisan.blog97.fc2.com/
0007nobodyさん2010/02/15(月) 23:44:26ID:???
なんでブログで話し言葉なんだろね
0008nobodyさん2010/02/16(火) 06:25:59ID:iRRBilsA
mail()関数を使ってるんですが、メールが送られてきません

echo "mail>". mail('toTest@toTest.com', 'My Subject', 'hohoho subject');

としたところ 「mail>1」と出力されたんですが、メールは送られてきません
どこを修正したら良いんでしょうか? phpというよりOS周りの問題になるかもしれませんが
よろしくお願いします。

centOS5.3 php5 サーバーは自宅サーバです。

ためしにコマンドラインで
% sendmail foo@example.com
From: my@mail.address (あなたのメールアドレス)
To: foo@example.com
Subject: This is test mail.
(ここに空行を入れる。ここまでがヘッダ。ここから先がボディ)
メールの内容
.(ドットのみの行を入力すると終了)

を実行してもメールは送られてきませんでした
(x68000.q-e-d.net/~68user/unix/pickup?sendmail このページを参考にしました)

アドバイスよろしくお願いします
0009nobodyさん2010/02/16(火) 07:19:59ID:???
くだらない質問なんですが、
xxxxx.php をLinuxサーバ上でデザインを弄くったりしてちょっと確認するためにバックアップを例えば
xxxxx.php.20100216.0717 とするとしますね。
ところがこれはhttp://xxx/xxx/xxxxx.php.20100216.0717 としてPHPが動作してしまいます。
PHPとして動作させないための設定ってありませんか?
0010nobodyさん2010/02/16(火) 08:22:35ID:???
>>9
少し趣旨が変わっちゃいますが、ウチはSubversionとかで管理してみては?
そんなに大きなプロジェクトじゃないなら大げさすぎますが。
0011nobodyさん2010/02/16(火) 11:19:49ID:???
>>9
phpはデフォルトだと拡張子がphpであるときのみしか動作しない
これはApache側の設定で行われている
なのでそれで動くはずはない
アクセスできたとしてもただのPHPのソースが表示されるだけだと思われ
headerでtext/plainと明示しない限りtext/htmlで出力されると思うので
<? ?>がxml宣言と解釈され何も表示されてないのをphpが実行されたと勘違いしてると思われ
htmlのソース見ればphpのソースが丸ごとでてくるなんてことはないか?
0012EM114-48-82-214.pool.e-mobile.ne.jp2010/02/16(火) 13:35:10ID:???
前スレの996へ

俺のことか996=OCNよ
俺はいま規制中だから書けねえよ
http://sports2.2ch.net/test/read.cgi/operatex/1266231624/53
勝手に人様を俺と勘違いするな

996 名前:nobodyさん[sage] 投稿日:2010/02/16(火) 09:39:35 ID:???
俺様をチンピラ呼ばわりか、日本人はksだな
俺様を馬鹿にするならPHP使うなよ。
0013nobodyさん2010/02/16(火) 13:38:22ID:???
それでもきっちり確認してるんだなww
0014nobodyさん2010/02/16(火) 14:14:18ID:???
代理まで頼むとは・・・しかも意味わからんし
0015nobodyさん2010/02/16(火) 14:25:19ID:PEPOZ1Ss
execで別PHPを実行する時に関数を指定することはできますか?
exec.php
 exec("/var/www/html/test.php");

test.php
 echo "test";
 function test1(){
 echo "test1";
 }

これだとtestと表示はされますがtest1とは表示されません。
関数を指定出来る方法があればおしえてください。
0016nobodyさん2010/02/16(火) 14:26:48ID:???
>>8
CentOSのコマンドラインから送信できないのであればCentOS側の設定の問題
SELinuxの設定
今ならOP25B対策の設定をしていないとか
その次はiptablesの設定
Linuxのコマンドラインから送信出来るようになった後にPHPから送信できなければPHPの
設定ファイルの確認
0017nobodyさん2010/02/16(火) 14:47:13ID:???
>>15
includeなりrequireじゃダメなの?

require_once "/var/www/html/test.php";
test1();
0018152010/02/16(火) 14:54:27ID:PEPOZ1Ss
>>17
別の人間が作ってて、何やら変数名やら色々な部分が被っているようで
includeしたらえらいことになってしまいました。
なので出来ればexecあたりで別物として扱えればいいなと。
変数名を統一した方がいいのはわかってるんですが、なにぶんあっちのコード書いた
人間がもう不在なので出来るだけ変更はくわえたくないな〜というのが・・・。

過去ログみてたらexecで引数をいくつか渡せるみたいなので
exec.php
 exec("/var/www/html/test.php" test1);
test.php
 echo "test";
 if(argv[1] == "test1"){
  $argv[1]();
   function test1(){
   echo "test1";
   }
 }
みたいな感じにしてみようかと思います。
もしかしたたらもっとスマートなやり方あるのかもしれませんが・・・
0019nobodyさん2010/02/16(火) 15:00:39ID:???
>>18
それだとtest.phpに思いっきり変更加えているように見えるけど・・・
functionだけの問題なら、test.phpからfunctionだけコピーそて
別ファイルにしたほうがいいんじゃないか?
0020152010/02/16(火) 15:03:07ID:PEPOZ1Ss
>>19
これくらいの変更が限界かな〜と・・・
このfunctionだけコピーしても色々と参照してるみたいでうまく機能しないという・・・
とても汎用性のないコードを書いてくれたもんで困ってました。
さすがに書き直す時間はないしこの変が妥協点かなと・・・
0021nobodyさん2010/02/16(火) 16:08:01ID:???
プログラムわからん人にも簡単に書き換えられる=汎用性がある
だと思ってんのか
0022nobodyさん2010/02/16(火) 16:53:56ID:???
変数名がバッティングするってことは
汎用性のないコードを書いたやつとレベルが同じということにはならないのだろうか
0023nobodyさん2010/02/16(火) 17:31:55ID:???
>>12
よくわからんが、あなたがキチガイっぽいのが分かった。
002482010/02/16(火) 18:36:18ID:iRRBilsA
>>16
ありがとうございます、OSの設定から見直してみます。
phpから離れた話題で申し訳ないのですが、
最近よく言われるsendmailよりpostfix,qmailの方が良いというのは
こういう送信失敗トラブルもそちらのほうが解決しやすいということが
あるのでしょうか?
0025nobodyさん2010/02/16(火) 18:54:25ID:???
スレ違いだが、sendmailは設定が面倒なだけ。
0026nobodyさん2010/02/16(火) 19:06:12ID:???
sendmaikl.cfがスラスラ読み書きできるならそれはそれでいいw
0027nobodyさん2010/02/16(火) 21:38:36ID:???
>>10-11
ありがとう。Apacheの設定も気になりますけど、中身が見えてもダメなんで、結局別ディレクトリにmvしますかね・・。
>>9でやった変更は自サイトのCSSを変えてサーバでチェックとかそんなんですのでここでSVNはちょっとw
0028nobodyさん2010/02/16(火) 21:56:03ID:???
>>27
そういうときは拡張子を統一して.htaccess(Apacheの設定)で
外からのアクセスを受けないようにすればいい
例えばxxxxx.php.20100216.0717の後に.backupってつけて
xxxxx.php.20100216.0717.backupっていうファイルにして

<FilesMatch "\.backup$">
Order allow,deny
Deny from all
</FilesMatch>

スレ違いだけどこんな感じか
0029nobodyさん2010/02/16(火) 22:09:01ID:???
【OS名】linux
【PHPのバージョン】php5
【連携ソフトウェア】mysql
【質問内容】
自分のレンタル鯖に指定したURLのファイルをPHPを使ってダウンロードさせて保存させるのは可能でしょうか?
0030nobodyさん2010/02/16(火) 22:21:28ID:???
可能です
0031nobodyさん2010/02/16(火) 23:16:48ID:???
つか指定の拡張子以外でスクリプト走ってしまうとかスルーしていいのか?
ちゃんと対応しといたほうがいいと思うぞ
0032nobodyさん2010/02/16(火) 23:59:48ID:???
>>31
httpd.confの
AddHandler php5-script .php
がおかしいみたいです。これを消して再起動するとxxx.phpもxxx.php.20100216も実行できずソースのテキストそのものが出てきます。

でも>>28さんの方法で解決したのでここはまあいいじゃないですかw
いろいろありがとうございました。
0033nobodyさん2010/02/17(水) 02:33:27ID:???
【OS名】レンタルサーバ
【PHPのバージョン】php5.26
【質問内容】

class foo {
 static $cash=array();
 function foo($id){
  if (self::$cash[$id]) return self::$cash[$id];
  SQLとかごにょごにょ;
  self::$cash[$id] = $this;
 }
}

という風にキャッシュを行おうとしていますが、2回目以降の生成で空のプロパティを持ったオブジェクトが帰ってきてうまくできません。
これは言語仕様としてうまくいかないものでしょうか?
それとも、他の部分(とくにごにょごにょの部分)に原因があると見るべきでしょうか?
0034nobodyさん2010/02/17(水) 02:35:47ID:???
テンプレは使うのにスレタイ読まない人っていったい・・・
0035332010/02/17(水) 02:38:09ID:9AFUUUC4
あああああああああ
専ブラでいつもsageっぱなしの癖が出てしまいました
申し訳ありません。
0036nobodyさん2010/02/17(水) 02:51:32ID:???
static $cashはfunctionの中じゃね?
あと$cashじゃなくて$cacheじゃね?
0037nobodyさん2010/02/17(水) 02:53:05ID:???
ごにょごにょな部分に原因があるかもと予想しておきながらそこを外して試さない人っていったい・・・

まぁそれは冗談だけど以下参考までに

<?php
class Test{
 public static $my_static = 0;
 public function addN($n) {
  self::$my_static += $n;
 }
}

$a = new Test();
$a->addN(1);
var_dump($a::$my_static);

$b = new Test();
$b->addN(1);
var_dump($b::$my_static);

結果:
int(1)
int(2)
0038nobodyさん2010/02/17(水) 03:19:21ID:9AFUUUC4
>>36
確かにそうですね・・・cashでは現金の方になりますね
指摘ありがとうございます。

javaをやっていたせいだと思うのですが、
関数の中に入れると気分的になんか嫌なんです・・・
入れないとデメリットが生じるものなのですか?

>>37
やっぱり残るものですよね

static function getInstanceとかやるべきなんでしょうか
他のソースに手を入れる事になるので、コンストラクタの中でやってみようと思ったのですけど
0039nobodyさん2010/02/17(水) 04:01:56ID:???
PHP で Firefox アドオンの Stylish みたいなことをしたいです。
file_get_contents で取得して、
head の css のリンク部分だけ変えてるのですが、
もっとスマートな方法ってありますか?
0040nobodyさん2010/02/17(水) 05:18:08ID:???
ないよ
0041nobodyさん2010/02/17(水) 08:54:37ID:???
>>38
コンストラクタでキャッシュを返してるつもりだけど
コンストラクタはインスタンス生成後に自動的に呼ばれるただのメソッド
なのでそのコードだと毎回新しいオブジェクトを作成して
キャッシュがあれば初期化しない、になってしまってる
やるなら言う通りstaticなファクトリメソッドか、別にキャッシュを返すクラスを実装するべきだね
■ このスレッドは過去ログ倉庫に格納されています