【PHP】質問スレッドpart31【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2005/11/27(日) 00:07:12ID:eBvjdczp【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。
過去スレ、関連リンク、FAQ等>>2-10辺り
0549520
2005/12/17(土) 17:35:48ID:???0550nobodyさん
2005/12/17(土) 17:38:58ID:???file関数は配列に読み込むとき行末の改行コードを削除しないんよ。
つttp://jp2.php.net/manual/ja/function.file.php
常にマニュアルを見て確認する癖をつけたほうが、上達早いよ。
0551nobodyさん
2005/12/17(土) 17:40:08ID:???0552nobodyさん
2005/12/17(土) 17:45:35ID:???Fedra以外のディストリビューションでPHP5が公式パッケージとして用意されているものはありますか?
0555nobodyさん
2005/12/18(日) 00:32:43ID:???仮に1秒間に複数回、関数が呼び出されたら、
1秒ごとに順に関数を実行する方法はありますか?
0557nobodyさん
2005/12/18(日) 05:35:07ID:???リンクに自動でSIDが付きません。
クッキーをオフにしてやっても付きません。
これは何が原因なのでしょうか?
0558nobodyさん
2005/12/18(日) 05:42:41ID:???現象が再現する短いソースを見せてちょ。
0559nobodyさん
2005/12/18(日) 05:46:31ID:???同じディレクトリでindex.phpをおいて
<?php
session_start();
if (!is_set($_SESSION['count'])) $_SESSION['count'] = 0;
else $_SESSION['count']++;
?>
<html>
<body>
<?=$_SESSION['count']?><br>
<a href="index.php">link</a><br>
</body>
</html>
0560nobodyさん
2005/12/18(日) 06:17:09ID:???0561nobodyさん
2005/12/18(日) 15:55:42ID:???session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 72000 1440
session.gc_probability 1 1
session.hash_bits_per_character 4 4
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path no value no value
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 1 0
あとこれかな
url_rewriter.tags a=href,area=href,frame=src,form=,fieldset= a=href,area=href,frame=src,form=,fieldset=
0562nobodyさん
2005/12/18(日) 17:08:07ID:???0563nobodyさん
2005/12/18(日) 19:38:22ID:???セキュリティレベルを最高まで上げたらできました。
ドメインでクッキーをはじくように設定していたのですが
なぜか反映されてなかったのです。。
0564nobodyさん
2005/12/18(日) 23:55:14ID:???(クッキーを使った方法は強制的になしにする)と思って
session.use_cookies を 0 に設定してみましたが、できませんでした。
何か凡ミスでしょうか。
それとも他に設定箇所があるのでしょうか。
0565nobodyさん
2005/12/19(月) 01:51:02ID:???セッションIDを受け渡す方法がないから。
ヒント:マニュアル セッションの受け渡し
0566nobodyさん
2005/12/19(月) 02:08:24ID:???方法はなくはないでしょう。
クッキーではなくURLに直接埋め込む方式でやりたいんです。
0567nobodyさん
2005/12/19(月) 02:19:55ID:???0568nobodyさん
2005/12/19(月) 02:27:11ID:R4UOoyTGもうかれこれ4日も導入に悪戦苦闘してます。
0569nobodyさん
2005/12/19(月) 02:34:32ID:???0571nobodyさん
2005/12/19(月) 02:42:22ID:nsaG6AgKどこかのサイトか本みてやればすぐ終わると思うのだが
0573nobodyさん
2005/12/19(月) 02:47:56ID:???もしありましたら教えてくださいm(_ _)m
Apatchの方は読めず、扱いが難しいので断念しました・゚・(ノД`)・゚・。
0574nobodyさん
2005/12/19(月) 02:50:06ID:???ttp://homepage1.nifty.com/yito/anhttpd/faq/php.html
このくらいしか知らない。
0575nobodyさん
2005/12/19(月) 02:52:45ID:???早速今から試してみます。
0577nobodyさん
2005/12/19(月) 02:56:22ID:???あと思いつくのは、リンクが全部絶対パス指定になっちゃってる場合とか…
(URL付加は相対パスしか変換しないのがお約束なので)
0578568
2005/12/19(月) 03:31:13ID:???本当にありがとうございました!!
ほんの30分で出来た・・・今までの4日間はなんだったんだ・゚・(ノД`)・゚・
0579nobodyさん
2005/12/19(月) 05:17:53ID:???session.use_cookies Off On
session.use_only_cookies Off Off
session.use_trans_sid 1 0
こんな感じです。
>>577
相対パスで書いてます・・・
0582nobodyさん
2005/12/19(月) 05:53:22ID:???/つ__∧ 〈( ´_>`)
|( ´_ゝ`) ヽ ⊂ニ) < OK兄者。漏れもそうだ。
ヽ__と/ ̄ ̄ ̄/ |
 ̄\/___/ ̄ ̄
0583nobodyさん
2005/12/19(月) 11:02:27ID:???はぁ?クッキー使用OFFにしてるのにクッキーで渡るの?
そりゃ単にphp.iniの設定が反映してないだけじゃないのか。
phpinfoの表示確認。できれば実行してるプログラム上でini_get()で設定値を確認してみれ。
0584nobodyさん
2005/12/19(月) 11:11:48ID:???session.use_cookies Off On
クライアント側にセッ ションIDを保存する際にクッキーを
使用するかどうかを指定します。
session.use_only_cookies Off Off
このモジュールがクライアント側へのセッションIDの保存に
Cookieのみを使用することを指定します。
session.use_trans_sid 1 0
透過的なセッション IDの付加をするかどうかを指定します。
デフォルトは、0(無効)です。
よってcookieが使われるように貴方が設定しているのが原因。
マニュアル読もうな。な!
0586nobodyさん
2005/12/19(月) 12:58:19ID:???local valueが有効なはず
0588nobodyさん
2005/12/19(月) 13:02:42ID:???local masterの順なのでcookieを使わない設定になってるはず。
0589nobodyさん
2005/12/20(火) 03:06:25ID:???0592nobodyさん
2005/12/20(火) 04:33:40ID:???ってことは信頼できるトコから情報を入手して比較するしかないんですね。
ありがとうございました。
0593nobodyさん
2005/12/20(火) 07:38:21ID:???・セットされていない
・NULL
・空文字列
の時1を返して
それ以外で0を返す関数ってありませんか?
issetは空文字列の時の処理が異なりました。
0594nobodyさん
2005/12/20(火) 07:40:25ID:???でいいのでは?
0595nobodyさん
2005/12/20(火) 09:47:38ID:???0596nobodyさん
2005/12/20(火) 11:28:53ID:???0597nobodyさん
2005/12/20(火) 11:40:27ID:???この辺参照
0598594
2005/12/20(火) 12:01:11ID:???! isset($var) or $var === ''
だわな。
ハズカチ
0599nobodyさん
2005/12/20(火) 18:00:13ID:???携帯用のメールフォームにて入力フォームを複数ページに分けて、
最終ページでメール送信というものを作成しています。
ページ間では各値をセッション変数に保持しているのですが、
過去2回ほど最初の方のページで入力した内容が消えてしまっていることがあります。
(各ページでは必須入力チェックを行っています)
このような現象が確認される場合、どのような原因が考えられますでしょうか。
ちなみに、この現象が起こったキャリアはauです。
PHP Version 4.2.3
session.auto_start Off
session.cache_expire 180
session.cache_limiter nocache
session.cookie_lifetime 0
session.cookie_path /
session.cookie_secure Off
session.gc_maxlifetime 1440
session.gc_probability 1
session.name PHPSESSID
session.save_path /tmp
session.use_cookies On
session.use_trans_sid 1
0600nobodyさん
2005/12/20(火) 18:41:02ID:???0601nobodyさん
2005/12/20(火) 18:57:00ID:???ガベージコレクションで最初の値削除されてしまってるということでしょうか。
な、なるほど。
0602nobodyさん
2005/12/20(火) 19:07:56ID:Lk6o0b9n本家に行ってもPHP5.1.1をDLするよう推奨されてて、PHP5.0.4をDL出来ないようなのですが・・・
どなたかDL出来るサイト等をご存知でしたら教えてください。
0604nobodyさん
2005/12/20(火) 19:45:29ID:???mixiとマルチポスト乙
0605nobodyさん
2005/12/20(火) 19:52:50ID:???0607nobodyさん
2005/12/20(火) 23:49:31ID:/3BtbpNS今触っているプログラムの中で
以下のようなコードがあるのですが
これはどういった意味なのでしょうか?
文脈から判断してif文のような気がしているのですが実際のところなんなのかわかりません。
$stockDiff = (isset($selectRow['STOCK']))? $CSVRow[STOCK] - $selectRow['STOCK']: 0;
0609nobodyさん
2005/12/20(火) 23:54:46ID:/3BtbpNSありがとうございます。
グ具ってみます。(^^)
0610nobodyさん
2005/12/20(火) 23:54:54ID:???if (isset($selectRow['STOCK']))
{
$stockDiff = $CSVRow[STOCK] - $selectRow['STOCK'];
}
else
{
$stockDiff = 0;
}
こんなかんじだ。
0611nobodyさん
2005/12/21(水) 00:00:16ID:/3BtbpNSありがとうございます。
そのまま使わせていただきます。
0612nobodyさん
2005/12/21(水) 00:13:08ID:???0613nobodyさん
2005/12/21(水) 02:54:53ID:???0614nobodyさん
2005/12/21(水) 11:14:58ID:uiIPgpa3Apacheを起動すると毎回
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
というエラーがでています。
eaccelerator.soの入っているディレクトリに上記2ファイルがあり、eaccelerator.soのファイルは読まれているようなのですが、そのほかが読まれてないようです。
php.iniで確認したところ、extension_dirは./ EnvironmentのPWDは/uar/local/etc/となっているので
session.soとmysql.soのリンクを張ってみると、今度はmysql関係のファイルが全部読まれてないらしく10KB近くのエラーログができてしまいました。
実際eaccelerator.phpを見てみると正常に稼働しているのですが、どうも気になります。
このエラーは放置してもいいのでしょうか?できれば対処法を教えてください。。
よろしくお願いします。
0616614
2005/12/21(水) 12:01:43ID:???[eaccelerator]
zend_extension="/usr/local/lib/php/20020429/eaccelerator.so"
eaccelerator.shm_size = "20"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"...
を1番下に動かしてみましたが、
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
[Wed Dec 21 11:56:50 2005] [notice] Apache/1.3.34 (Unix) AuthMySQL/2.20 PHP/4.3.11 configured -- resuming normal operations
[Wed Dec 21 11:56:50 2005] [notice] Accept mutex: flock (Default: flock)
とでました。。
オプティマイザーはeAcceleratorしか使ってません。
0618614
2005/12/21(水) 12:23:30ID:uiIPgpa3FreeBSD 4.11を使用しています。
これがいけないんでしょうか?..
ちなみにportsからインストールしています。
0619nobodyさん
2005/12/21(水) 12:49:36ID:???FreeBSDのportsでPHPをインストールすると、
/usr/local/etc/php/extensions.ini というファイルが作られて、
session.so とか mysql.so なんかはこのファイルで追加される。
そして、Apache起動時は /usr/local/etc/php.ini を読んでから、
extensions.ini が読み込まれる。
つまり、php.ini の最後に eaccelerator.so の設定を書いても
最後に読み込まれるわけではないのよ。
よって、extensions.ini の最後に eaccelerator の設定を書くか、
extension.ini の内容を php.ini に移してファイルを消せばいい。
ただこれだと ports を更新する度に同じ作業が必要になるので、
対応策を思案中・・・
ひょっとして適当なファイル名でeacceleratorの設定だけを書いておくと
extension.ini の後に読み込まれないかなと期待してるんだけど。
0620619
2005/12/21(水) 13:00:16ID:???/usr/local/etc/php/extensions2.ini
ってファイルを作って、そこにeAcceleratorの設定を書いておくと、
php.ini → extensions.ini → extensions2.ini の順番で読み込まれた。
ファイル名のソート順でよかったもよう。
0621614
2005/12/21(水) 13:07:44ID:???一度ここのextensionを直接の場所で指定してエラーになりました。
extension.iniの最後に移してみました。
extension=session.so
extension=mysql.so
[eaccelerator]
〜〜〜〜
でやってみましたが、だめでした。。エラーの内容は変わりません。
>ひょっとして適当なファイル名でeacceleratorの設定だけを書いておくと
>extension.ini の後に読み込まれないかなと期待してるんだけど。
# これなら、phpinfo()のScan this dir for additional .ini filesの欄のフォルダに入れると起動時に読まれるっぽいです。
0622614
2005/12/21(水) 13:08:55ID:???やってみます
0623614
2005/12/21(水) 13:13:28ID:???# additional .ini files parsed
/usr/local/etc/php/extensions.ini, /usr/local/etc/php/zextension.ini
これで、きちんと読まれているようですがエラーの内容は変わりませんでした。。
0624nobodyさん
2005/12/21(水) 13:14:48ID:???分かったわよっ!別ファイルに書けばいいんでしょっ!......(アリガト)
0625619
2005/12/21(水) 13:22:09ID:???力になれなくてすまんな。
ところでeAcceleratorとPHPのバージョンは確認済みだよね?
あまり意味ないかもしれんが、うちのバージョンを書いておくね。
# php -v
PHP 5.0.5 (cli) (built: Nov 25 2005 17:25:57)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.3, Copyright (c) 2004-2004 eAccelerator, by eAccelerator
0626614
2005/12/21(水) 13:27:39ID:???#php -v
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
PHP 4.3.11 (cli) (built: Dec 10 2005 06:01:20)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.4-rc1, Copyright (c) 2004-2005 eAccelerator, by eAccelerator
ちなみに同じ環境(4.11と4.10の違い)の0.9.3の方はうまく動いているんです。
0.9.3に戻してやってみて、また報告します
0.9.4はまだバグが多いのかわかりませんが、eaccelerator.phpのCleanを押しても動きません。
0.9.3は正常に動作しますけどね。。
0627619
2005/12/21(水) 13:32:29ID:???> #うちのはあつかましくエラーと共に表示されました。
そりゃそうでしょう。
libraryがロードできてないのはsessionとmysqlだからね。
ところで、sessionとmysql以外のモジュールはちゃんと動作してるの(php -i で確認)?
0628147
2005/12/21(水) 13:56:56ID:N7x21G0Gphpの配列について質問があります。
前のページで
<input type="hidden" name="20051218133001" value="1">
のhtmlタグのフォーム(POST)で飛ばし、下の記述で表示させようとしましたがエラーが出てしまいます。
if($_POST['20051218133001']){
print<<<EOM
<table>
<tr>
<td valign="top">$_POST['20051218133001']<td>
</tr>
</table>
EOM;
}
エラーは
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/***/***/***.php on line 5
と出ます。
ifの後の$_POST['20051218133001']は普通に処理しているのですが、
print<<<EOMの中の$_POST['20051218133001']が引っかかっているみたいです。
試しに後者を$_POST[20051218133001]と書くと普通にエラー無く表示されます。
次に前者も$_POST[20051218133001]とするとエラーは出ないのですが
ifの条件分岐に入ってくれません。
どなたかご指導よろしくお願いします。
0629147
2005/12/21(水) 13:57:27ID:N7x21G0GサーバOSはUNIX系OSのFreeBSDを使用しているそうです。
PHP のバージョンは 4.3.10 です。
よろしくお願いします。
0630614
2005/12/21(水) 13:57:38ID:???それどころか、
session
Session Support => enabled
Registered save handlers => files user eaccelerator
Directive => Local Value => Master Value
session.auto_start => Off => Off
session.bug_compat_42 => Off => Off
session.bug_compat_warn => On => On...
mysql
MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 4.0.26
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /tmp/mysql.sock...
ときちんと動作もしています
0631nobodyさん
2005/12/21(水) 14:03:21ID:???なんかどっかで見かけたような。。
原因はヒアドキュメントの中でどこからどこまでが変数なのかが
PHPの中の人が判断できなくなっている、つーことだから、
{ } を使って明確にしてあげればよい。
{$_POST['20051218133001']}
0632619
2005/12/21(水) 14:38:45ID:???お手上げです。
eAcceleratorの読み込みをやめて Warning が出てこなくなるなら eAcceleratorの
せいだろうし、そうじゃないなら session.so と mysql.so に問題があるんじゃないかと。
後は error_reporting = E_ALL にしたらもっと詳しいメッセージが出てこないかな?
0633nobodyさん
2005/12/21(水) 14:40:00ID:ybikX0hyphpのUTF-8を指定するには、どうすればいいですか?
htmlの場合は、
.htaccessに
AddType "text/html; charset=UTF-8" html
ですが、
phpの場合は、
AddType "text/html; charset=UTF-8" php
とするだけで良いのでしょうか?
サーバは、xreaです。
よろしくお願いします。
0634nobodyさん
2005/12/21(水) 15:27:38ID:???文字列(ヒアドキュメントを含む)の中で配列変数を書くときは
{$変数名['キー']} と書かなきゃいけないことは
マニュアルに明記されてる。
II言語リファレンス 6章「型」 参照のこと。
0635nobodyさん
2005/12/21(水) 15:29:50ID:???<?php
header("Content-type: text/html; charset=utf-8");
echo "Hello world";
?>
0636nobodyさん
2005/12/21(水) 15:31:31ID:???それは違うんでねーの。
>>633
とにかくここ嫁。
http://jp2.php.net/manual/ja/ref.mbstring.php
0637nobodyさん
2005/12/21(水) 15:35:07ID:???タイトルに404などの文字が含まれているとかで判定するなんてことはないですよね。
0638nobodyさん
2005/12/21(水) 15:35:47ID:???iniのdefault_charsetがクリアされてなきゃデフォで送信されるけど
0642nobodyさん
2005/12/21(水) 15:55:24ID:???php5なら
get_headers
0644nobodyさん
2005/12/21(水) 18:44:32ID:???0645nobodyさん
2005/12/21(水) 19:22:32ID:???どのような正規表現を書けばよいですか?
index.html
top.htm
frame.htm
top.jpeg
icon.gif
1.css
2.css
例えば↑のファイルがある場合、
↓の結果を返すようにしたいのです。
.html
.htm
.jpeg
.css
0646nobodyさん
2005/12/21(水) 19:24:57ID:???0647nobodyさん
2005/12/21(水) 19:59:31ID:???■ このスレッドは過去ログ倉庫に格納されています