【PHP】質問スレッドpart18【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/06/14 14:36ID:???・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
http://www.php.net/
■日本 PHP ユーザ会
http://www.php.gr.jp/
■PHP マニュアル
http://www.php.net/manual/ja/
■PEAR マニュアル
http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-4
抜けているものがあったら補足願います
0232nobodyさん
04/06/20 19:08ID:QviSJ75H和訳できんのかなんていってるんだからただの糞厨房にきまってんだろ。
しかもファイル全体を読み込むからとか言語障害くせーぞ。
すげー無駄だわ。
>>228
スクリプトは問題ないし、GDのバージョンかなあ。
0233nobodyさん
04/06/20 19:39ID:???つーかRedhat?
あれにデフォルトでのってるphpを使うといろいろ苦労が絶えないらしいね。
0234204
04/06/20 20:16ID:???>>231が少し書いているが、これは本質的にはfopenの問題なのでfile_get_contents()だけじゃなく、
fopenのhttpラッパーをとるhttpアクセスすべて(要するにコンテクストをつかったもの)で起こる。
因みに、本家のバグリポートはこの問題の修正には極めて消極的で、
あきらめるしかないようだった。
荒れぎみなのでこの話はこれで終了ということにしてほしい。
以上。
0235nobodyさん
04/06/20 20:32ID:Uv3J3abeバッチファイルからローカルでPHPを処理するプログラムを書きました。
ファイル名の一括置換プログラムなんですが、
foreach($rename as $var){ //$renameは置換条件を記した配列
$n = $newfilename;
$newfilename = preg_replace("/$var[0]/i","$var[1]",$newfilename);
if($n != $newfilename) print "$n\n"; //四行目
}
として、preg_replaceで文字置換を行っているんですが、
日本語ファイルの場合、必ず ー(伸ばす音) が ・ に文字化けします。
四行目では、preg_replaceを通す前と通ったあとが違う場合に変化を表示させようと
したのですが、改名条件にはまったく ー を入れてないのに、
文字が変わってしまいます。
本バージョンで、文字化けなどのバグは報告されたりしてるんでしょうか
ググったら前のバージョンでの文字化けの情報があり、 ←参照ttp://jp.xoops.org/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=1998&forum=11&move=next&topic_time=1063857527
php.iniの設定をいじってはみたのですが変わりません。
0236nobodyさん
04/06/20 20:41ID:???キチンと質問文かけば偉い人が教えてくれるかも。
0237nobodyさん
04/06/20 20:51ID:???そうなるとphpの問題じゃなくなるか。環境しだいですな。
0238nobodyさん
04/06/20 20:55ID:???ところでphpの日本ユーザ会ってアクティブにやってんの?
まるで話を聞かないんだが。
googleの検索順位ではいつのまにかphp研究所を抜いてるね。
0239nobodyさん
04/06/20 22:00ID:PqNZ37ceスクリプトの途中で
いろんなファイルにリダイレクトしたいのですが
どうしたらよいですか?
0240228
04/06/20 22:12ID:???どうも。結局原因不明のままファイルに書き出すように
仕様変更しました。
ちなみにDebian (woody)のパッケージ物でした。
本番環境は自分のいじれない環境なので、自力コンパイル
することもできず。。
0241235
04/06/20 23:01ID:Uv3J3abe文字コードはphp.ini で
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
にあわせたんですが、どこの設定を見直せばいいのでしょう
参考の参考ていどでもアドバイスがいただければお願いします
0242nobodyさん
04/06/20 23:11ID:???>PHP: 4.1.2
この頃のPHPでoutput_handlerにmb_output_handlerを使っていると、
Content-Typeを見ずに画像もコード変換するので画像が壊れるんだが
(phpinfoのロゴまで壊れてくれる)、その現象じゃないのか?
0243nobodyさん
04/06/20 23:11ID:???0244nobodyさん
04/06/20 23:20ID:???そんなことはない。確かにメジャーな組み合わせだけどね。
Webサーバ用インターフェースはCGIも含めて色々あるし、CLI(コマンドライン)版もある。
0247nobodyさん
04/06/20 23:36ID:???PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php/extensions/mysql.so' - libmysqlclient.so.12: cannot open shared object file: No such file or directory in Unknown on line 0
orz
0249nobodyさん
04/06/20 23:44ID:???0250nobodyさん
04/06/20 23:54ID:???>>247のエラーは、php.iniにauto_prepend_fileを設定してあるんではないかと。
外しているかもしれんが。
設定してあったとしても、そういうエラーが出るのは不思議だが、
使ったこと無いので、わからんぽ。
0251nobodyさん
04/06/21 00:19ID:???winの文字コードからスクリプト内で扱っている文字コード(euc-jp)に
コンバートして、書き込み時は逆変換すればおkと思われ。
0252nobodyさん
04/06/21 00:26ID:???Error in argument 1, char 2: option not found r
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
php <file> [args...]
-a Run interactively
-C Do not chdir to the script's directory
-c <path>|<file> Look for php.ini file in this directory
-n No php.ini file will be used
-d foo[=bar] Define INI entry foo with value 'bar'
-e Generate extended information for debugger/profiler
-f <file> Parse <file>. Implies `-q'
-h This help
-i PHP information
-l Syntax check only (lint)
-m Show compiled in modules
-q Quiet-mode. Suppress HTTP Header output.
-s Display colour syntax highlighted source.
-v Version number
-w Display source with stripped comments and whitespace.
-z <file> Load Zend extension <file>.
できないヽ(`Д´)ノ
0254nobodyさん
04/06/21 00:32ID:???0255nobodyさん
04/06/21 00:39ID:rIRMytTYzlib libjpeg libpng GDをインストールした後、
./configure --with-zlib-dir=/usr/local/lib --with-gd --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/local/lib
make
make install
としたのですが、
なにか他にやることがあるのでしょうか?
OS: linux
PHP: 4.3.6
apache: 1.3
0256nobodyさん
04/06/21 01:36ID:???FAQ を読むこと
0257235
04/06/21 02:16ID:U3ATJTTUアドバイスありがとうございます。
それってphp.iniの設定ですよね?
今色々調べながら苦戦中です。文字コードを変えたら
日本語がまったく表示できなくなったりして
0258nobodyさん
04/06/21 02:31ID:???一応PHP.net等のFAQは見てみたのですが、参考になりそうなのがなさそうでした。
見つけられないだけかもしれません。
PHP付属のがあるので、GDは特に自分ではインストールする必要がなかったのでしょうか
0259nobodyさん
04/06/21 02:48ID:???iniの設定であわせてもいいし、251にあるようにスクリプト内で変換してもいい。
phpで参照する場合には、内部エンコードに合わせ、最終的な出力時にはwinの
コードにあわせて変えればいいだけ。
必要なことは全部マニュアルに書いてあるので、他は色々調べる必要なし。
http://www.php.net/mbstring
要するに内部エンコとwinのエンコが違うなら、当然一手間かける必要があるということ。
文字コードはいつまでもついて回るので自分で分かったと思えるまでやったほうがいいのです。
0260257
04/06/21 03:19ID:U3ATJTTU何度もすみません、ご指定のページを自分でも見つけてやってはみたのですが、
もとのphp.iniに追加モジュールのphp_mbstring.dllをsystem32に追加して
追加モジュールを受けるように php.iniのその行の;をはずしました。
あとは例2にあるようなEUC-JP ユーザ用のphp.iniの設定に直せばいいんですよね
php.iniはそのページの設定どおりに変更したはずなんですが、どうしても
伸ばす音が文字化けが消えないのですが、他にいじるところはあるのでしょうか
preg_replaceでもmb_ereg_replaceでも変わらないのですが・・・
0261nobodyさん
04/06/21 03:28ID:???windowsから受け取ったらeuc-jpに、windowsに渡すときはsjisにコンバートかければよいかと。
mb_convert_encoding($string, 'euc-jp', 'sjis');みたいな感じでつ。
0262nobodyさん
04/06/21 03:29ID:???まあそのへんは適当に(^^);
0263nobodyさん
04/06/21 04:38ID:t8xSnGRb渡す前の中身は "%001%002%003%004%005" なのですが、これを$_GETや$_POSTで拾おうとすると
"\01\02\03\04\05\" という文字列に変わってしまっています。
これを元に戻す、もしくは上手く拾う方法は無いでしょうか?
0264263
04/06/21 09:55ID:???stripslashesでした。
0269nobodyさん
04/06/21 16:30ID:???libmysqlclient.so.12 をPHPがロードしようとして、
見付からなくて止まってるんだな。
find /usr -name libmysqlclient.so.12 で探して、
見つけたディレクトリを /etc/ld.so.conf に書き加えて、
ldconfig しとけ。
0270sage
04/06/21 17:23ID:???umask(0);
if(mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
これで同名のディレクトリが存在した場合に
Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --
と、警告がでてしまいます(処理は流れきっているぽい)
できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか
0271sage
04/06/21 17:24ID:???umask(0);
if(mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
これで同名のディレクトリが存在した場合に
Warning: mkdir(/hoge/hoge): File exists in /***/result.php on line --
と、警告がでてしまいます(処理は流れきっているぽい)
できればこの警告を表示させたくないのですが
なにか対処方法はありますでしょうか
0272nobodyさん
04/06/21 17:52ID:???umask(0);
if(!file_exists("/hoge/hoge") && mkdir("/hoge/hoge", 0707)) {
...
} else {
...
}
でどぅ?
単にエラー表示したくないのなら
error_reporting(0);
0273nobodyさん
04/06/21 18:43ID:???0274nobodyさん
04/06/21 18:46ID:???そのエラーの発生要因が判っていて、かつ、
そのエラー発生を防ぐ為だけにとまどろっこしくなる(複雑になる)
のなら、エラー制御演算子
ttp://jp.php.net/manual/ja/language.operators.errorcontrol.php
を使うといいかも。
臭いものには蓋的な解決法なんで、>>272の方がいいけど
0275nobodyさん
04/06/22 10:25ID:???PHPからmysql_queryするとエラーが出る場合、SETする文字に問題があるとは
想うのですが、どんな文字が原因となっていると考えられるしょうか?
mysql_query($query)の部分をecho $queryで出力してC&PでphpMyAdmin
のSQLで実行すると成功します。文字コードも関係しているのでしょうか?。
0277275
04/06/22 10:53ID:???と書いていたせいでした。お騒がせしましたm(_)m。
>>276
アドバイスありがとう^^
0278nobodyさん
04/06/22 16:04ID:5HQSlaavセッション以外に格納できる良い場所はないでしょうか?(毎回ページアクセスするたびにDBにアクセスされたくないため)
0279nobodyさん
04/06/22 16:07ID:???0280nobodyさん
04/06/22 16:47ID:uF7//6+H0282nobodyさん
04/06/22 16:56ID:???0284nobodyさん
04/06/22 18:39ID:???0285nobodyさん
04/06/22 19:41ID:???0287nobodyさん
04/06/23 08:56ID:???診断君へ逝く
もしくはLAN外で、<?=$_SERVER['REMOTE_ADDR']?>
または、>>281
2.プライベートIPが知りたいなら
LAN内で<?=$_SERVER['REMOTE_ADDR']?>
もしくは、Windowsだったら、ipconfig
Linuxだったら、>>285
3.メアドが知りたいなら
ISPに聞く。
4.住所が知りたいなら
>>283
たぶん…3かな。
0288nobodyさん
04/06/23 09:04ID:???出力バッファに貯めておいて横取りしてファイルに出力する。
<?php
ob_start();
?>
(ここでいろんな出力)
<?php
$file = fopen('ファイル名','w');
fputs($file, ob_get_clean());
fclose($file);
?>
0289nobodyさん
04/06/23 12:22ID:gFRZUYHbは、PHPではどうやるのでしょうか?教えてください、お願いします
0290nobodyさん
04/06/23 12:23ID:gFRZUYHbPHP5.0β4
Apache2.0.48
です。
0291nobodyさん
04/06/23 12:30ID:???csvファイルのアップロードをするのに、fgetcsv関数をつかってるんですが
excel2000で"," をという値で保存したcsvファイルをアップロードすると,"と読み込まれます。
これは仕様でしょうか?
PHP Version 4.3.6を使っています。
よろしくお願いします。
0292うんこ
04/06/23 12:40ID:???http://jp.php.net/reserved.variables
0295nobodyさん
04/06/23 12:53ID:???すいません。
エディタで見たのですが、わかりませんでした。
こちらのほうで正常に読み込まれたのでこちらをつかう事にします。
http://pukiwiki.org/index.php?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fcsv2newpage.inc.php
0296nobodyさん
04/06/23 14:01ID:???0297nobodyさん
04/06/23 14:20ID:qX+B9Isgis_numeric($str)
0301nobodyさん
04/06/23 15:06ID:???これで文字列に \ を入力すると どんどん増えていきます (バイバイン級)
どうしたらいいでしょうか
送信前にJavaScriptでurlencodeしなきゃだめ?
0302nobodyさん
04/06/23 15:17ID:???<INPUT NAME="unko" VALUE="<?= stripslashes($_GET['unko']) ?>">
0305nobodyさん
04/06/23 15:39ID:???0306nobodyさん
04/06/23 15:44ID:???$kurimanju = $kurimanju * 2;
return $kurimanju;
}
0309301
04/06/23 16:11ID:???まあそうなんだけどさ
VALUE="<?= urlencode(stripslashes($_GET['unko'])) ?>"
ってやってもだめだったし
preg_replace("/\"/","\\\"",$dpreg) でもだめだった
そもそも"\""という表記がだめっぽだし
シングルクオーテーションで囲えばいいんだけど
今度はそのシングルクオーテーションが入力できなくなるし
もうおっぱいおっぱいなんですよ
0311nobodyさん
04/06/23 16:15ID:jqDhu+uCVALUE="<?= urlencode(htmlspecialchars(stripslashes($_GET['unko']))) ?>"
0313nobodyさん
04/06/23 20:26ID:15bnd+/J$key=mb_convert_encoding($_POST["keyword"], "EUC-JP","auto");
で文字コードを変換すると、変換したくない他の検索エンジンもEUCに変換されてしまうのですが、
変換されないようにするにはどうすればよろしいのでしょうか。
<?php
$Key=urlencode($_POST['keyword']);
$key=mb_convert_encoding($_POST["keyword"], "EUC-JP","auto");
switch($_POST['engine']) {
case "kakaku": $url="http://www.kakaku.com/txtsearch/txtsearch.asp?SearchWord=";
break;
case "yahooauction": $url="http://search.auctions.yahoo.co.jp/jp/search/auc?auccat=0&alocale=0jp&acc=jp&p=";
break;
}
header("Location: ".$url.$Key);
?>
0315nobodyさん
04/06/23 20:38ID:???方法は色々あるけど、件のソースのようにswitchで
切り替えてるなら、caseの中でそれぞれのサイトに合わせて
$key←$_POST["keyword"]の処理をしたらいいでそ。
最も、各サイトのurlとか変換処理の有無なんかは
配列かなんかで前の方で設定を集約するのがスマートやね。
0317nobodyさん
04/06/24 11:14ID:Ig3nklaT昔のPHPはGETやPOSTなど区別する必要が無いと効いています。
例えば、
$_POST["giko"] : 10
$_GET["giko"] : 20
$_COOKIE["giko"] : 30
$_SESSION["giko"] : 40
のような場合のときに、
echo $giki
とすると何が表示されるのですか?
0318nobodyさん
04/06/24 11:40ID:???0322nobodyさん
04/06/24 12:36ID:???variables_orderで指定した優先度の高い(右側)ものが入る。
通常の$_SERVER[]と同じ。
ああ、PHPの設定で変わるもんだから、仮にPOSTが無かった
時にはGETでという処理を書くときも、システムの動作に
依存させないで、ちゃんとコーディング上で処理しないと駄目。
# register_globalsはコードの中でini_setできないし
0323nobodyさん
04/06/24 13:35ID:???register_globals = Offで使おうとしてこうやった事あるw
$key = array_keys($_REQUEST);
$i = 0;
while(isset($_REQUEST[$key[$i]])){
${$key[$i]} = $_REQUEST[$key[$i++]];
}
0324nobodyさん
04/06/24 13:46ID:???0325nobodyさん
04/06/24 13:49ID:???0326nobodyさん
04/06/24 16:35ID:???0327317
04/06/24 17:36ID:???自分ではそのようなかき方はしないのですが、
頂いたソースがそのように書いたものでしたので。
0328nobodyさん
04/06/24 20:43ID:???@function_name で呼出してる例があって
探したんだけど@についての説明を見つけることができませんでした
@つけるとどうなるんですか?
0329nobodyさん
04/06/24 21:54ID:???0330nobodyさん
04/06/24 22:26ID:WjPQG3mJphpのソースをプレーンテキストとして表示させるにはどうしたらよいでしょうか?
apacheの設定なのか拡張子をtxtに変えただけでは、プレーンテキストとして表示してくれません。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています