【PHP】質問スレッドpart27【php】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
05/03/03 22:41:23ID:???・新規質問の方は上げてください。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-10辺り
0119100
05/03/13 19:14:17ID:???どうやって指定するのでしょうか。
--with-xslt-sablot以外になさそうなのですが。
./configureの中身は読んでみましたがさっぱりでした。
0120nobodyさん
05/03/13 21:02:24ID:???読むのならむしろ libsablotron の configure とか /usr/include/sablot.h かと。
0121nobodyさん
05/03/13 21:15:58ID:???だからexpatはともかく、sablotは使っとらんので知らんがな。
>--with-xslt-sablot以外になさそう
それはPHPのconfigureオプションであって、PHPで該当するオプションは
sablotの設定を見て自動で設定するからいらない。
コメントで書いてあるのは、それ故「必要ならsablotの設定をちゃんとしろ」ってこと。
0122100
05/03/14 03:18:42ID:???ないみたいです。
gingerall にいったら、新しい1.0.2が出てたのでそれをインスコ中
0123100
05/03/14 05:32:21ID:???http://bugs.php.net/bug.php?id=21427
これを参考にしたんですけど。
●Sablot-1.0.2
$ ./configure --with-expat=/usr/local --with-iconv=/usr/local
●php-4.3.10
./configure --with-apxs2=/usr/local/apache2/bin/apxs \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-mbregex \
--enable-zend-multibyte \
--with-zlib \
--with-mysql=/usr/local/mysql \
--with-zlib-dir=/usr/lib \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-xml \
--with-dom=/usr/local \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-iconv-dir=/usr/local \
--with-expat-dir=/usr/local
expatとiconvのインストールディレクトリ合わせてるんですけど
だめなんですよ。
0124nobodyさん
05/03/15 02:58:15ID:hZ3yLB9y携帯で着メロのダウンロードサイトを作成しているのですが、
開発環境のWindows版ではうまく動作するのですが、
本番環境のLinux版ではダウンロードしようとするとで502エラーを返してきます
fopen(ファイル)
fput(ファイルの中身吐き出し)
fclose
って方法で接続端末に着メロを出力しているのですが、
なぜかうまくいきません。
502エラーってことはApacheの設定が悪いのでしょうか?
そして、対処法はどのようにすればよろしいでしょうか?
0127nobodyさん
05/03/15 21:24:22ID:???0128nobodyさん
05/03/16 22:49:46ID:???00分になりアクセスがあったらファイルを出力し次の00分になるまで出力はなし。見たいな考え方でいいですか?
この考え方だと一回もアクセスがないと出力されないことになりますが、何か便利な関数があるんですか?
0129nobodyさん
05/03/16 23:10:09ID:???これが使えないようなら、データ投入時や表示時になんとかするしかない。
表示時(アクセス時)に必要なデータをかき集められるものなら、表示時に時間をチェックして誤魔化す。
データ投入時にあらかじめページを作成しておいて、表示時の時間チェックと組み合わせるのもありだな。
実行環境ややりたい事が分からんことには、可能か不可能かさえも分からんよ。
0130nobodyさん
05/03/16 23:49:33ID:???背景が透過gifな画像をリサイズした場合に透過ではなくなるのですが、
これを透過のままリサイズ出来ないのでしょうか?。
出来るのであれば参考になるサイトまたは方法を教えてください。
0131nobodyさん
05/03/17 10:53:09ID:???基本は、>>129が言うように、OSの自動処理を使う。
連鯖などでcrontabが使えない場合、いかにしてトリガを引くか、それを考える。
・WEBアクセスの際に前回処理時間と比較しトリガ発生→アクセス無ければ無意味
・自宅のPCのタスクスケージュラや、DiCE等で定期的にトリガプログラムへアクセス →PC付けっぱなし必須
・携帯電話などで自分でトリガプログラムに定期的にアクセス → 鬱陶しい、眠れない、パケ代かさむ
さぁ、どれにする?
0132128
05/03/17 11:48:17ID:???リナックスのことワカメだから本買ってしらべてみます
0134nobodyさん
05/03/17 17:42:24ID:???こんな感じ。フルカラーじゃないから汚いけど。
$src_info = getimagesize ($src_path);
$src_image = imagecreatefromgif ($src_path);
$dst_image = imagecreate ($dst_width, $dst_height);
$trans = imagecolortransparent ($src_image);
if ($trans) {
imagepalettecopy ($dst_image, $src_image);
imagefill ($dst_image, 0, 0, $trans);
imagecolortransparent ($dst_image, $trans);
}
imagecopyresized ($dst_image, $src_image, 0, 0, 0, 0, $dst_width, $dst_height, $src_info[0], $src_info[1]);
imagegif ($dst_image, $dst_path);
0135128
05/03/17 18:11:56ID:???使ってるサーバーがカゴヤなんだけど
cron設定はノーサポートでおしえてくれないや
自分なりに考えてみたんだけど
カゴヤ管理画面のCRON設定 で
*/1 * * * * /home/カゴヤアカウント/public_html/count.php
のみ入力してみたんだけどでなにがちがうんですかね?
/bin/sh: /home/カゴヤアカウント/public_html/count.php: cannot execute binary file
ってなのがメールで送られてくるんだけど
エロイ人教えてください
0136nobodyさん
05/03/17 18:24:21ID:???エロくはないけど、
たぶん、
*/1 * * * * php /home/カゴヤアカウント/public_html/count.php
だろうね。
それでもエラーが出るようなら、phpのパスを調べれ。・
0137128
05/03/17 18:41:56ID:???/bin/sh: php: command not found
のエラーのメールがきますわ
count.phpのパーミッソンハ705
中身は
<?/* シンプルカウンタ by ToR tp://php.s3.to 2000/10/18 */
$fp = @fopen("count.txt","r+") or die("ファイルが開けません");
$count = fgets($fp, 64);
$count++;
rewind($fp);//set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
fputs($fp, $count);
fclose($fp);echo $count;?>
何がちがうんですかね?
0138nobodyさん
05/03/17 18:45:35ID:???>>136 wrote
> それでもエラーが出るようなら、phpのパスを調べれ
環境変数、特にコマンドの検索場所を指すPATHが違う。
0141128
05/03/17 19:10:27ID:???できたよありがとうぅ
こんなん何処でおしえてもらうん?
専門学校かね?
んまありがとー
0142130
05/03/17 19:11:49ID:???ありがとうございます。
imagecolortransparent()の返り値が0の場合があるのでif ($trans) {の分岐を外して
実行しているのですが、返り値が0以外の場合には透過になりません。
$trans = imagecolortransparent ($src_image);
imagepalettecopy ($dst_image, $src_image);
imagefill ($dst_image, 0, 0, $trans);
imagecolortransparent ($dst_image, $trans);
パレットをコピーし透過になる色で塗りつぶし、その色を透過に指定しているので
正しく透過出来そうだと想うのですが、これはフルカラーではないという所が問題
なのでしょうか?。
imagecreatetruecolor()で作成した場合は正しく利用できないのでしょうか。
塗りつぶしをしているので問題がある場合もありそうですが、とりあえず
$trans = 0で指定しています。
0143nobodyさん
05/03/17 19:52:29ID:???AnHttpDでISAPI経由でPHPを動かしているのですが
ISAPIだと設置した掲示板やチャット等で、IPやHOSTの情報を取得してくれません。
CGI経由だと取得してくれるのですが、この問題を解決する方法はありますか?
■バージョン
PHP 5.0.3
AnHttpD1.42n
0144nobodyさん
05/03/17 20:22:09ID:???PHPのバージョンを変えてみるという手がある。
が、「問題を解決する方法」としては選択しづらいだろうね。
つか、なんでバージョンでその辺が変わるのかねぇ>PHP
サーバ側とのAPIが変わってるわけでもないのに。
0145143
05/03/17 20:25:16ID:???スクリプト上で取得の方法を変えたら出来ました。
(前)$ip = getenv("REMOTE_ADDR");
(後)$ip = $_SERVER["REMOTE_ADDR"];
お騒がせしますた(;´д`)
0147nobodyさん
05/03/17 21:12:04ID:PAcs7vRbrequire_once('../main.inc');
と相対パスで一つ上を指定したいんだけど、open_basedirをどう設定すればいい?
0150nobodyさん
05/03/18 10:44:51ID:0xXwO3moAUTO指定でEUCに変換すると
preg_replace("/(\r\n|\r)/","\n",$str);
$str = mb_convert_encoding($str,"EUC","AUTO");
毎回ではないのだが、頻繁にエンコードに失敗するのですが
Warning: mb_convert_encoding(): Unable to detect character encoding in hoge.php on line ○○
何故?改行コードでエンコードの判断してるの?
エンコードしてから改行コードの変換をすれば良いって問題なんかな?
formはSJISで、PHPのバージョンは4.3.4です。
0151nobodyさん
05/03/18 11:00:56ID:???SJISでスクリプト掻いてますか
EUCですか?
0153nobodyさん
05/03/18 11:44:31ID:???formがSJISならSJISで来る確率が高かろうから'auto'じゃなくて
'SJIS, EUC-JP, UTF-8, JIS, ASCII'とでも指定してみれば
私はhiddenに判定文字列入れてmb_detect_encodingやってるけども
0156nobodyさん
05/03/18 14:09:11ID:???0157nobodyさん
05/03/18 15:47:30ID:H8eZrdKtErrorDocument 404 /404.php
として404をPHPに飛ばしてるのですが
このPHPで本来どこにアクセスされたのかを
知ることってできますか?
0158nobodyさん
05/03/18 16:06:59ID:???0160nobodyさん
05/03/18 17:05:03ID:???0162nobodyさん
05/03/19 00:12:12ID:???ファイルの行数を取得したいのですが、
極力負荷を低くやりたいです。
ファイルのサイズはデカくて、
1行の文字数は不定なのですが
なにかウマい方法はないでしょうか?
0164nobodyさん
05/03/19 00:53:10ID:???0165nobodyさん
05/03/19 00:57:40ID:???>>163
す、すみません…
バイナリは扱ったことがないので分からないのですが
もう少し詳しく教えていただけませんか?
>>164
ファイルがかなりデカいので、fileで読み込むと悲惨なことになりそうです…
0167nobodyさん
05/03/19 01:00:14ID:???PHPでできないと少々具合が悪いのですが…
0173nobodyさん
05/03/19 01:18:16ID:???1行がよっぽど長くなければメモリも食わん。
0175nobodyさん
05/03/19 07:56:37ID:???∠( ゚д゚)/「え?」
釣りですかそうですか
λ..........
0176nobodyさん
05/03/19 08:27:15ID:???>>168みたいなうそつきの言うことは聞かないで
<?php
$file = 'C:\Program Files\Apache Group\Apache2\logs\access.log';
$fp = fopen($file, "r");
$count = 0;
while(!feof ($fp)) {
if ($line = fgets($fp) and substr($line, -1) == "\n") $count++;
}
fclose($fp);
echo $file."の行数は".$count."です";
?>
最後の行に改行が無いと1行少なくなる
0177nobodyさん
05/03/19 10:32:13ID:???ここに出て来る @ ってなに?
$fp = @fopen($file, "w");
$write = @fputs($fp, $contents);
@fclose($fp);
0178nobodyさん
05/03/19 10:41:48ID:???@があるとないの違いがわかる。
0179177
05/03/19 10:45:34ID:???で見つけたけど、warning を出さなくする修飾子ってこと?
0180にーchan
05/03/19 10:54:51ID:XBx83jBtWarning: mb_send_mail(): Failed to connect to mailserver at "192.168.11.100" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\home\mail\a.php on line 10
とエラーが出てしまいます。
portはwebで開いているか確認できるページで確認したら開いてました。
php.iniでもsmtp_port = 25と記述もしてみたのですがだめでした。
php.iniのSMTPをniftyのSMTPサーバー名にしても同じく・・・
他に考えられる原因は何があるでしょうか?
0181nobodyさん
05/03/19 11:21:46ID:???・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
のどちらか。
0182nobodyさん
05/03/19 11:40:40ID:???>portはwebで開いているか確認できるページで確認したら開いてました。
例示がローカルアドレスなのに、webでのチェッカーで確認したというのが怪しい。
0183にーchan
05/03/19 12:06:15ID:???・SMTPサーバが動いていない
・SMTPサーバを勝手に使えないよう制限されている
とはメールサーバを立てているのですがそれの設定が違ってるってことでしょうか?
>182
外部へポートが開いていた場合でもローカルは閉じている場合はあるのでしょうか?
0184nobodyさん
05/03/19 12:07:10ID:0sO4bGN40187nobodyさん
05/03/19 14:05:22ID:oXb2sDzY暗号化してDBに保存、読み出して複合化とかしたいんだけどPHP中やDBに複合化の
Keyとかプレーンで書いておいたら意味が無いかとも思うしかといってKey暗号化しておいたら
Keyの複合化どーすんのよっつーか
0188nobodyさん
05/03/19 14:12:54ID:???0189nobodyさん
05/03/19 14:20:54ID:oXb2sDzY比較だけなら暗号化したもの同士で行えば良いんだろうけど
例えば会員がパスワード忘れて問い合わせてきた場合は?
もっかい登録しなおせって訳にもいかないだろうし、個人情報についても
保護法絡みで共有サーバなんかの場合暗号化しときたいんだけど
0192nobodyさん
05/03/19 18:21:51ID:Mh3YU28Aなぜでしょう?
0193nobodyさん
05/03/19 18:35:39ID:???基本的には通常通りサーバが吐いてれば取れるはずだが、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/21b3be8f-d4ed-4059-8e21-6cba2c253006.asp
AN-httpdとISAPI版PHPとではバージョン違いの組み合わせで
取れたり取れなかったしてた時があったな。
CGI版だと取れたり。
0195nobodyさん
05/03/20 03:54:17ID:34HEFa63Ver.4.3.10を使っていてphpinfoをみると
--enable-mbstring=shared
という一文があるのですが、mb_string系の関数がundifinedといわれて困っています。
どうすればmb_string系の関数を使用できるのでしょうか?
0197nobodyさん
05/03/20 04:21:53ID:34HEFa63ちょっと意味がわからないのですがどういう意味でしょう?
0199nobodyさん
05/03/20 04:32:48ID:34HEFa63ちなみにロードするファイル名は何でしょうか?
教えて君ですいません
0201nobodyさん
05/03/20 05:45:12ID:???http://jp2.php.net/manual/ja/function.dl.php
*mbstring*なファイル名。最もmbstringはdlできたんだっけ?
0202nobodyさん
05/03/20 17:42:42ID:???最初にチェックボックス形式でチェックした品名だけをドロップダウンリスト形式で表示させ
ドロップダウンリストから選択した品名の個数を入力して値段を計算させる、という感じで作ろうとしています。
↓-----index.phpの一部-----↓
<form method="POST" action="test.php">
<input type="checkbox" name="check[]" value="みかん">みかん<br>
<input type="checkbox" name="check[]" value="林檎">林檎<br>
<input type="checkbox" name="check[]" value="梨">梨<br>
<input type="submit" value="OK">
↑----------↑
↓--test.phpの一部--↓
echo "<form method=POST action=" . {$_SERVER['PHP_SELF']} . ">\n";
echo "<select name=name>\n";
for( $i=0; $i<count($_POST['check']); $i++) {
echo " <option value=$_POST['check'][$i]>$_POST['check'][$i]\n";
}
echo "</select><br>\n";
echo "個数:<input type=text size=6 name=pieces value=" . {$_POST['pieces']} . ">\n";
echo "<input type=submit value=計算>\n";
echo "</form>\n";
↑----------↑
ドロップダウンリストから選択して計算までは出来るのですが、
計算を実行したあとドロップダウンリストの中身が空っぽになってしまいます。
このドロップダウンリストの中身を保持して欲しいのですが、どの様にすればよいのでしょうか?
0203nobodyさん
05/03/20 17:58:06ID:???> ドロップダウンリストから選択して計算までは出来るのですが
いや、どうみても出来てないっしょ、そのソースを見る限り。
それは置いておくとして、
1回目のtest.phpで<select name="name">の指定があるので
2回目のtest.phpでは $_POST['name'] と $_POST['pieces']の2つの変数がセットされます。
従って、for($i=0;$i<count($_POST['check']);$i++)の内部が実行されることはありません。
0204202
05/03/20 19:06:41ID:???速レス有り難うございます。
すいません、よく分からなくなってしまったのでソース全部晒します。
################test.php################
<?php
include_once("display.inc");
include_once("input.inc");
include_once("calc.inc");
include_once("result.inc");
if (empty($_POST['pieces'])):
$_POST['pieces'] = "";
endif;
display_input_area();
if (!empty($_POST['pieces']) && input_is_valid()):
$result = calc_mikan();
display_result($result);
endif;
?>
################item_data.inc################
<?php
$check = $_POST['check'];
$item_data = array(
"みかん" => array(
"price" => "26",
"tax" => "0"
),
"林檎" => array(
"price" => "30",
"tax" => "0"
)
);
?>
0205nobodyさん
05/03/20 19:08:08ID:???<?php
function display_input_area()
{
require("item_data.inc");
print <<<__EOD1__
<form method=POST action="{$_SERVER['PHP_SELF']}">
<table><tr><td>
__EOD1__;
echo "<select name=name>\n";
for( $i=0; $i<count($check); $i++) {
echo " <option value=$check[$i]>$check[$i]\n";
}
echo "</select>\n";
print <<<__EOD2__
</td><td>個数:<input type=text size=6 name=pieces value="{$_POST['pieces']}">
</td><td>税率(%):<input type text size=4 name=tax value="{$_POST['tax']}">
</td></tr></table><br><input type=submit value="計算"></form>
__EOD2__;
}
################calc.inc################
<?php
function calc_mikan()
{
require("item_data.inc");
$name = $_POST['name'];
$char_tax = $_POST['tax'];
$base_price = $item_data[$name]['price'];
$mikan = $base_mikan * (1 + $char_tax / 100);
return (integer)$mikan;
}
?>
0206nobodyさん
05/03/20 19:13:18ID:???<?php
function input_is_valid()
{
if ($_POST['pieces'] > 0):
return TRUE;
endif;
return FALSE;
}
?>
################result.inc################
<?php
function display_result($result)
{
require("item_data.inc");
print <<< __EEE__
<table border=0 cellpadding=2 cellspacing=1 bgcolor=#696969><tr>
<td width=120 align=center bgcolor=#e6e6fa>品名</td>
<td align=center bgcolor=#e6e6fa>個数</td>
<td align=center bgcolor=#e6e6fa>値段</td></tr><tr>
<td width=120 bgcolor=white>{$_POST['name']}</td>
<td bgcolor=white>{$_POST['pieces']}</td>
<td bgcolor=white>{$result}</td></tr></table>
__EEE__;
}
?>
徹底攻略見ながら作ったのがバレバレで恥ずかしい・・・
>2回目のtest.phpでは $_POST['name'] と $_POST['pieces']の2つの変数がセットされます。
>従って、for($i=0;$i<count($_POST['check']);$i++)の内部が実行されることはありません。
なぜ、2度目以降ではforループの内部が実行されないのでしょうか。
0207nobodyさん
05/03/20 19:27:47ID:???0208nobodyさん
05/03/20 19:40:30ID:???制御構造に関する別の構文
ttp://www.php.net/manual/ja/control-structures.alternative-syntax.php
これって、マニュアルでしか見た事なかったよ。。実際に使っている人がいたのか(笑)
0210nobodyさん
05/03/21 00:42:45ID:???連想配列を渡すとリストとして返ってくる関数とか無いですか?
0211nobodyさん
05/03/21 00:44:11ID:???0213nobodyさん
2005/03/21(月) 09:29:01ID:???例えば strip_tags()した後、 だけ取り除きたい時って
どうすればいいの?
0214213
2005/03/21(月) 09:33:40ID:???例えば strip_tags()した後、&ンBSP;だけ取り除きたい時って
って書きました…
■ このスレッドは過去ログ倉庫に格納されています