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

【PHP】質問スレッドpart16【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/04/07 01:06ID:HTcWOpWf
PHP全般の質問スレです。
上級者用や雑談スレを立てたくなった場合は後から適宜立ててください。

■本家
 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-5
0232nobodyさん04/04/15 16:23ID:???
>>231
ごめん、俺頭悪いんで、あなたの状況がいまいちわからん。。。

>text/html 以前なのでソースが表示されてしまいます
ってどういう状態?

>そうすると配列の中身が改行されないで表示されてしまいます
print_rの出力で改行されないって話?
それはブラウザがHTML的にレンダリングしてるからじゃないの?
ソースを見るか、print_rの出力前後に<pre>タグいれるかしたら解決しない?

なんせ理解しきれてないので見当違いなら悪かった。
0233nobodyさん04/04/15 16:36ID:???
>>232
説明不足ですみません...

>> text/html以前
というのは、ヘッダーを出す前ということです。
Content-Type : text/html\n\n
を出す前に print_rするとhtmlがソースで出てしまうので、変数にデバッグ情報を格納して
HTMLの中で表示したいという意味です。

print_rみたいなのの内容を変数にいれて、<pre></pre>で囲ってもなぜか、ちゃんと
改行されないのです。

print_rやvar_dump()の結果など変数に入れられないので困っています。

やりたいことは、ただ変数や配列の中身を調べたいだけなのですが...


0234nobodyさん04/04/15 17:00ID:???
やりたいことは判るが、状況が判るような判らんような。

>$debug .= var_export($str);
多分、var_export()の第2引数のところをよく読めば解決。
http://www.php.net/manual/ja/function.var-export.php

あとは出力バッファリングを制御して、var_dump使う手もある。
0235nobodyさん04/04/15 17:03ID:???
phpinfoに引数与えて、変数のあたりの項だけ出力つうのもあるな。
ただこれはphpinfo自身もヘッダー出力するのでダブって出ちゃうけど、
ブラウザが宜しく表示してくれるので、簡易的には使える。
0236nobodyさん04/04/15 17:31ID:???
>>234
$debug .= var_export($str, TRUE);
にしてみました。うまくいってないようです。
引き続き調べてみます。

>>235
> phpinfoに引数与えて、変数のあたりの項だけ出力つうのもあるな。

そんな方法もあるのですね試してみます。

preで表示されない件は、どうやら以下のように指定することで解決したような
感じです。xhtmlとかcssの新しいので仕様が変わったんでしょうか...

<pre style="white-space: pre">


0237nobodyさん04/04/15 17:36ID:???
何処で聞けばよくわからないのですがとりあえずphpの事なのでここで質問です。

ふたば(レッツPHP)の画像うpろだに、
携帯からアクセスるることは出来ないのでしょうか?
0238nobodyさん04/04/15 17:43ID:???
>>237
そのふたばで聞けばいいでしょ
0239nobodyさん04/04/15 17:45ID:???
何故ここで菊?
0240nobodyさん04/04/15 17:46ID:???
>>238
あ、そうですね。ごめんなさい。

>>239
一応phpだし、ここ以外に何処で聞けばよくわからなかったもので。
0241nobodyさん04/04/15 18:04ID:???
他人の作ったスクリプトの事をここできかれてもな
その人にきくのがスジってもんだろ
024223604/04/15 18:49ID:???
原因はスコープの問題のような気がしてきました。

調べたい配列を Debug($array); しているのですが、グローバルで指定してるはずの
$debug_output に何も表示されません。
少なくとも

マニュアルなど見てもこれでOKなはずで、何が悪いのかさっぱりわからないのですが...
どんな原因が考えられるのでしょうか?
少なくとも function Debug called: と表示されなくてはいけないはずなのに

function Debug($tmp)
{
global $debug_output;
$debug_output .= "function Debug called:\n";
$debug_output .= var_export($tmp, TRUE);
}
024323604/04/15 18:58ID:???
すみません。解決しました。

Debug($array); を読んでいる関数の中で global $debug_output;
していなかったためでした...

うぅ、むずかしぃ。
お騒がせしてすみません。
0244nobodyさん04/04/15 19:03ID:???
>>243
ついでに。

上手くいったら判ると思うけど、var_dumpの出力と
var_exportの出力とは同じものではないので、
さっきも書いたけどvar_dumpの出力をバッファリングして
処理するつうのも試したら良いよ。

<?php
ob_start();
$ary = array(1,2,3);
var_dump($ary);
$dump = ob_get_contents();
ob_end_clean();
?>
<html><head><title>TEST</title></head>
<body><?php echo $dump; ?></body></html>
0245nobodyさん04/04/15 22:41ID:???
PHPでhtml部分全部表示させた完全に動的なページって、
グーグルとかの検索エンジンにはひっかからないですよね?index.phpみたいなの。

でも静的なhtml内に部分的に埋め込んだ場合は、
PHPによる置き換え箇所の文字列も検索にちゃんとひっかかるんでしょうか?

簡単な日記更新用のスクリプト書いて、自動でログを読み込ませようとしてるんですが、
検索にひっかからないようなら、.htmlの完全に静的なファイルを、更新するたびに毎回書きださなきゃと思って。

cgiなら少しはさわったことあるけど、phpはこれからはじめようと思って…。


よろしくおねがいします。
0246nobodyさん04/04/15 23:11ID:???
>>245
プログラマならもう少し論理的に考えてみましょう。
htmlファイル、HTMLにPHPを埋め込むタイプ、PHPでHTMLを出力するタイプ。
検索エンジンがこれらのファイルを呼び出すと、HTTPヘッダ部分・ボディ部分が返ってくるわけです。
ボディ部分は出力のタイプによって変化しているわけじゃないのはすぐ分かると思います。
となると、違いがあるとすればヘッダ部分だけになります。
ところが、header()関数というものが存在し、これを用いてヘッダ部分をも統一することができるわけです。
困ったことになりました。>>245さんの質問の前提とも言うべき事が破綻してしまったのです。

いや、まぁグーグルだけを気にするならHELPにそのまんまの答えが書いてあるわけだが。
0247nobodyさん04/04/15 23:36ID:???
>>245
>PHPでhtml部分全部表示させた完全に動的なページって、
>グーグルとかの検索エンジンにはひっかからないですよね?
そんなことはないよ。まあロボットの中には拡張子で
動的コンテンツだと思われるものを除いて収集する、
性能の余り良くないものもあったけど。

>でも静的なhtml内に部分的に埋め込んだ場合
ここで前述のコンテンツの作りと「違う場合」と思ってるのは間違った理解。
0248nobodyさん04/04/15 23:48ID:???
>>246 >>247

プログラマじゃないです、只の素人です。
なのでheader()関数云々などよくわかりませんでしたが、
書き込みを見て色々と検索で調べてみました。

結果、

http://www.sem-research.jp/sem/seo/20030926003954.html

ここなどを見ると僕が思ってたほどの問題はないですねー。
urlに引数を付けないトップページだけ検索にかかればいいし。

どうもありがとうございます。
0249nobodyさん04/04/16 03:24ID:???
>>229
どこが悪い?
0250nobodyさん04/04/16 04:57ID:52nqSZp9
今週からPHPを触り始めました。
眠くて頭が働きません。。。
だれか
http://www.aaa.co.jp/bbb/ccc/ddd/eee
から、www.aaa.co.jp/bbb/ccc/ddd

 を、取り出す方法を伝授してださい。
つまらない質問ですみません。
0251nobodyさん04/04/16 04:59ID:???
>>250
一眠りしてからがんばれ
0252nobodyさん04/04/16 05:07ID:52nqSZp9
わかるんですが、これが出来たら・・・

と、あれやこれやで、夜が明けちゃいました。(*ノ-;*)エーン
0253nobodyさん04/04/16 07:14ID:???
>>250
その書き込みだけじゃ、いまいち抽出条件がわからんが、たぶん、
$a="http://www.aaa.co.jp/bbb/ccc/ddd/eee";
ereg('^http://(.*)/[^/]*$',$a,$r);
echo $r[1];
かな。
0254nobodyさん04/04/16 08:50ID:???
dirnameで拾った文字列からhttp://を抜くとか
0255nobodyさん04/04/16 08:54ID:???
>眠くて頭が働きません。。。
ワロタ
0256nobodyさん04/04/16 11:51ID:???
"/"でぶった切って繋ぎ合わせるとかw
0257nobodyさん04/04/16 13:08ID:???
PEARか拡張関数でURIを構造分割するのが確かあったと思うけど。
0258nobodyさん04/04/16 13:34ID:cDPeW6cE
>>257
>>250にPEARの話をするのは酷かと思うぞ
0259nobodyさん04/04/16 14:25ID:7NgfJvTR
>>250
こういう関数もある
<?
$url = "http://www.aaa.co.jp/bbb/ccc/ddd/eee";
$parse_url = parse_url($url);
$dir_name = $parse_url[host].dirname($parse_url[path]);
echo $dir_name;
?>
0260nobodyさん04/04/16 14:29ID:???
これだけ手法があるのに解らず、
>>250の「これが出来たら…」で
何が出来るんだろうw
0261nobodyさん04/04/16 14:33ID:???
のび太 <> ドラえもん
くらいにインターフェースがスマート&簡素化されていないPHPが悪いんですよ!
0262nobodyさん04/04/16 14:49ID:???
>>261
アニメと現実を分けて考えられないお前が一番悪いけどな。
正しく"ドラえもん"って書けた点は褒めとくが
0263nobodyさん04/04/16 16:40ID:???
ドラえもんくらい今時一発変換。
0264nobodyさん04/04/16 18:10ID:???
ふつうにeregでhttp://退けろよ
0265nobodyさん04/04/16 20:49ID:???
質問があります。

NPO広場
http://www.npo-hiroba.or.jp/cgi-bin/nposearch/npo_top.cgi

ここの検索結果の団体詳細を
全てローカルに落とすことは出来ませんでしょうか?
アンケート調査を行いたいのですが、
ここから手動でデータを落としていると
それだけで膨大な時間がかかるので。

わかる方いたら教えて下さい
026626504/04/16 21:22ID:???
>265
urlのid=の所を指定したら出来ました
自己解決です
026725004/04/16 23:11ID:???
あああ、レスがあったんですね。
いま、戻りました。
あの後、置き換える関数やら、最後の位置を取る関数やらを使って一応出来て
そのまま、寝ちゃいました。
教えていただいた関数も方がスマートなので使わせていただきます。

もう寝ます。(ゝ_ξ) ゴシゴシ
0268nobodyさん04/04/16 23:28ID:???
>>266
>urlのid=の所を指定したら出来ました
今日日、その程度でも難癖つけられる場合もあるかもね。
0269nobodyさん04/04/17 20:15ID:???
preg_match (pattern,subject [,matches])
の、patternとして、「辞書配列hoge」の「要素hage」を使いたいのですが、
どういった記述をすればよいのでしょうか?
027026904/04/17 20:22ID:???
ごめん、事故解決。
preg_match ("/".$hoge['hage']."/",$subject)
であっけなくできたわ。
0271nobodyさん04/04/17 21:30ID:???
<?
require "setting.inc";
echo "ようこそ";

みたいな感じでで共通で使う変数を羅列した設定ファイル(setting.inc)を読み込もうとしているのですが…

setting.incの中身が全部そのままブラウザに吐きだされてしまいます…

$data_dir="/data/"; $imagefile="img/";ようこそ

↑こんな感じ


こんなはずではなかったのですが…
どうすればよいのでしょう…
0272nobodyさん04/04/17 21:56ID:???
>>271
includeされるファイルも、ちゃんとPHPスクリプトにしてるかい。
要は<?php ?>で囲んどるか?
# おっちゃん、短縮形は好かんぞ

027326904/04/17 22:22ID:???
すいません、今度こそまともな質問です。
PHPでWEBメーラーを作ろうと目論んでいるのですが、
メールの受信処理を行うには、どうすればよいのでしょうか?
0274nobodyさん04/04/17 22:26ID:jFDbaWFj
fsockopen
027526904/04/17 22:27ID:???
>>274
ああああっ! そっか、その手が……。
すいません、名無しに戻って首吊ってきます。
0276nobodyさん04/04/17 23:25ID:???
>>272
さんきゅ、はじめてなのでわかりませんでした。
ありがとうございます
0277nobodyさん04/04/18 00:02ID:???
>>276
require_once使っとけ
0278nobodyさん04/04/18 04:09ID:???
すいません、ファイルを新規作成して文字列を書き込もうとしているんですが、
うまくできません。
下のコード、どこがおかしいんでしょうか?

$filename = 'test.txt';

if (!$handle = fopen($filename, 'w+')) {    //←ここの条件分岐をスルーせずに
echo "Cannot open file ($filename)"; //ブラウザにコレが返ってくる。
return;
}

if (!fwrite($handle, "ほげ")) {
echo "Cannot write to file ($filename)";
return;
}

fclose($handle);
0279nobodyさん04/04/18 04:30ID:???
>>278
何らかの要因でtext.txtが新規作成できない。
ディレクトリのパーミッションとかそんな感じ。

PHPの動作モードとか、どういった権限のユーザで
動いてるのか等も関係するけど、その辺は環境毎に
違うので管理者に訊くなりして、自分で調べてね。
0280nobodyさん04/04/18 12:48ID:???
PHPで鯖のIPアドレスは取得できるのですが、
ポート番号を取得する関数とかないんですか?
0281nobodyさん04/04/18 13:24ID:???
>>280
言っている意味が不明。
028228004/04/18 13:32ID:???
>>281
説明下手ですいません。
httpデーモンが動いているポート番号(80など)を取得したいのです。
自分の環境が80では無く、可変なので。
0283nobodyさん04/04/18 13:36ID:???
>>282
$_SERVER['REMOTE_PORT']
0284nobodyさん04/04/18 13:40ID:???
は?>283
$_SERVER["SERVER_PORT"]
ちゃうの?
0285nobodyさん04/04/18 13:44ID:???
>>284
ごめん間違えた。
0286nobodyさん04/04/18 13:53ID:???
あの、cryptは先頭8byteしか見ないんですが、他に何かいいのありませんか?
複合化できるのは無しでお願いします。
md5って

$pass="a8o4hn&$NKJnhsu5";
$md5_pass=md5($pass);

こんなので出来るんですか?
0287nobodyさん04/04/18 13:53ID:1szp522M
ちわ。

自宅鯖でPHPとMysqlを使っています。
下記のように書いたのですが、13行目でエラーが出てしまいます。
やろうとしていることはテーブルにあるデータを読み出して、カウントした数字を出したいのですが、
一体どうすれば・・・・


<html> //一行目
<head>
<title>test</title>
</head>
<body>
<table border="1">
<tr><td>ID</td><td>名前</td><?php
$con=mysql_connect("localhost","root","root");
mysql_select_db("kisop",$con);
$sql="SELECT * FROM test_table LIMIT 10";
$cnt="SELECT COUNT * FROM test_table";
$cnt1=mysql_query($cnt,$con);
print("データ件数は".$cnt1"件です"); //13行目
$res=mysql_query($sql,$con);
while($row=mysql_fetch_array($res)){
print("<tr>");
print("<td>".$row["id"]."</td>");
print("<td>".$row["name"]."</td>");
print("</td>");
}
?>
</table>
</body>
</html>
0288nobodyさん04/04/18 13:54ID:???
print("データ件数は".$cnt1"件です");
↓
print("データ件数は".$cnt1."件です");

凡ミスですな
028928004/04/18 14:03ID:???
みなさん、ありがとうございます。
$_SERVER["SERVER_PORT"]で上手くいきました。
// マニュアル読まないといけませんね。
0290nobodyさん04/04/18 14:04ID:1szp522M
あっ、どもです。
エラーはでなくなったんですが
データ件数は件です と表示され、数字が出てきません・・・
こっ、これは一体なぜでありましょうか?
0291nobodyさん04/04/18 14:22ID:???
>>279
ありがとうございます。
ディレクトリのパーミッション違いで解決しました。

ただ、もうひとつ問題がわき上がって、
fopenで開く時の$filenameが

$filename="/test.txt";
とか
$filename="http://hoge.com";

などの絶対パスだった場合はオープン出来ないんですけども、
これは鯖にインスコされてるphpの設定ファイルに基づいた仕様ですか?

うちはレンタル鯖なのでもしそうなら諦めた方がよさそうですが。
0292278=29104/04/18 14:23ID:???
あ、レス番つけるの忘れた
0293278=29104/04/18 14:26ID:???
さらにまちがい…

×

$filename="/test.txt";
とか
$filename="http://hoge.com";


↓

○

$filename="/test.txt";
とか
$filename="http://hoge.com/test.txt"; //←
0294nobodyさん04/04/18 14:43ID:???
>>293
まずhoge.comに繋いでからtest.txtをリクエストするようにすればいい。
0295nobodyさん04/04/18 14:47ID:???
リモートの XML ファイルを読み込んで、そのデータを全て配列変数にするにはどうすればいいでしょう?
具体的には

<?xml version="1.0" encoding="UTF-8"?>
<test>
<hoge>geho</hoge>
<foo>bar</foo>
</test>

$test[hoge] = "geho";
$test[foo] = "bar";

みたいな感じにしたいんですが…。
0296nobodyさん04/04/18 14:49ID:???
質問する奴って話の流れを考えないのな
0297nobodyさん04/04/18 14:53ID:???
>>293
open_basedirディレクティブで範囲を制限してると思われ。
http://www.php.net/manual/ja/features.safe-mode.php

前の動かないってやつもそうだけど、ちゃんとエラーが
出力されているので、レポーティングレベルきつくして
ちゃんと見れ。特にPHPに慣れてない場合は。
http://www.php.net/manual/ja/function.error-reporting.php
http://www.php.net/manual/ja/security.errors.php
(下はデバッグと運用時とでは、エラー出力の考え方が違うよという説明)
0298nobodyさん04/04/18 14:55ID:???
>>290
PostgreばかりでMySQLはよく知らないけど、
mysql_queryの返り値は"データ件数"ではないと思う。。。
0299nobodyさん04/04/18 14:58ID:???
>>290
mysql_query()は、クエリーが成功したかどうかを 表すために
TRUE(非ゼロ)またはFALSEを返します。(マニュアルより)

>>291
> $filename="/test.txt";
パーミッション
>$filename="http://hoge.com/test.txt";
HTTPは書き込みのみ。ftp://ならうまくいくケースもある。
詳しくは、マニュアルの「サポートされるプロトコル/ラッパー」を参照のこと。
0300nobodyさん04/04/18 15:00ID:???
>>295
普通にリモートのファイルをテキストとして読んで、
そのテキストをxmlとしてパースして処理する。
xmlのパースについては何通りかあるので自分で調べてください。
# 標準のものは初めてだと使いづらいかな。PEARとかSimpleXMLを検討せよ。
030129904/04/18 15:03ID:???
>>299の
HTTPは書き込みのみ -> HTTPは読み込みのみ 、に訂正。

本家のchmマニュアルはまだ中国語になってるねぇ。
最初見たときやたらと英語の部分が多いなと思ったら、その後は漢字の部分多すぎ、と。
0302nobodyさん04/04/18 15:16ID:???
>>301

> 本家のchmマニュアルはまだ中国語になってるねぇ。

政治的意図があると尾藻割れ。
0303nobodyさん04/04/18 15:59ID:1szp522M

//セレクト代入
$sql="SELECT * FROM test_table LIMIT 10";
$cnt="SELECT COUNT * FROM test_table";

$cntdata=mysql_query($sql,$con);
$cntdata2=mysql_num_fields($cntdata);
$cntdata2=$cntdata+1;

print("データ件数は".$cntdata2."件です");


なんかもっとスマートにできないものかと・・・・

030427804/04/18 16:18ID:???
>>299

あきまへん…
ルートフォルダのパーミッションを777にしてみても無理でした。

$filename="test.txt";
と
$filename="/test.txt";

のは全く同じ場所を指してるんですが、"/test.txt"みたいなルート参照の場合は、
やっぱりオープンエラーが出てしまいます。
0305nobodyさん04/04/18 16:41ID:???
>>304
ファイルシステムのルートとWEBサーバのルートを混同してませんか?

常識的なシステムなら
>$filename="test.txt";
>と
>$filename="/test.txt";
なんて変態な設定はされてないと思いますが。
030630504/04/18 16:42ID:???
× なんて変態な設定はされてないと思いますが。
○ が同じなんて変態な設定はされてないと思いますが。
030728604/04/18 17:23ID:???
md5($str)
でやってみたところ、うまく出来ました。
10万桁分ループ回しましたけど全然かぶってないです。
MD5が一番精度高いのでいいですか?
それと、md5($str)の使い方で合ってますよね?
もちろん複合化できませんよね?
0308nobodyさん04/04/18 17:30ID:???
精度ってなんよ?
>286にしてもお前さんが何がわからなくて何を聞きたいのか
わからないからレスがつかないんだと思われ
030928604/04/18 17:35ID:???
>>308
えっと、先頭何文字を見て暗号化するってことです
cryptは8文字なので精度が低い、ということです
0310nobodyさん04/04/18 18:05ID:???
そういう意味なら理論上"精度"は無限
031127804/04/18 18:13ID:???
>>305
realpathをとってみるとわかりましたが、見事に混同してました。
ありがとうございました。
0312nobodyさん04/04/18 18:13ID:???
>>309
言ってる日本語がオカシイ。
それなら精度じゃなくて強度。
また必ずしも強度は単純に
「先頭何文字を見て暗号化」
に比例もしない。
031331204/04/18 18:15ID:???
「10万桁分ループ回しましたけど全然かぶってない」
という意味か...精度つうのかな、それ。

少なくても強度の話をしたいのではなかったな、
そこは勘違いしてた。
031428604/04/18 18:24ID:???
えーと、いろいろ日本語がおかしかったようで・・・すいません。。。
1桁〜10万桁の数字を試したけどハッシュが被ってなかった->先頭10万桁以上は見てくれてる
ということが言いたかったんです。

それで、本題なんですが、パスワードを暗号化して管理するのにはどのアルゴリズムがいいのでしょうか、ってことです。
今までcrypt使ってたのですが、さすがに8桁は少なすぎると思って・・・
それで、複合化できなくて、強度?が高いのはどれでしょうか?
0315nobodyさん04/04/18 18:28ID:???
俺はパスワードは生でデータベースに保存してる。
データベースだから簡単にアクセスされないだろ?


って、安全面考えなさ杉?
暗号化するべきなのかなぁ?
でもそれだったらパスワード再発行がめんどいし
0316nobodyさん04/04/18 18:37ID:???
他と比べての採用じゃないけど、俺もそういう場合md5使ってる
0317nobodyさん04/04/18 18:37ID:???
phpでディレクトリを作成するのにmkdirを使ってるんですが、
一度に一つ(一階層分)のディレクトリしか作成できないんですか?

hoge/hog/ho

と一気に作りたいんですが…。

0318nobodyさん04/04/18 18:47ID:???
mkpath
0319nobodyさん04/04/18 19:35ID:???
>>318
ありがとうございます、できました。

っていうか、色々試してるうちに、どうやっても消去できないディレクトリとかができちゃったんですが(;´Д`)
FFFTP使ってるんですが、そのディレクトリとそれ以下のものがすべて削除できません。
練習用に作ったゴミフォルダだから削除したいのに。

とりあえず、削除したい大元のフォルダの属性は755になってます。
FFFTPで777とかにしようとしても755です。

これが原因なんでしょうか。
0320nobodyさん04/04/18 19:39ID:???
>>319
所有権がないんだろ。
0321nobodyさん04/04/18 19:55ID:???
>>319
phpからunlinkすればいいと思われ
0322nobodyさん04/04/19 01:24ID:???
>>315
再発行ダメだろ。リマインダからランダムパスワードで上書きして通知とか、それが妥当では。
俺はパスワード問い合わせてオペレーターから「あなたのパスワードは~です」と返ってくる状態の方が怖いな。
1サービス1パスワードを全ユーザーが通しているわけではなく、他のサービスと共通化していたり命名則が一緒の場合があるから
暗号化しといた方が運営上のリスクは減るんじゃないの、と思うが。
0323nobodyさん04/04/19 19:26ID:???
>>322
DBには複合不可能のアルゴリズムで暗号化しておき、
アクセス時には入力されたパスワードを同じアルゴリズムて暗号化させて合致すればOK
パスワード再発行は、秘密の質問と答えを始めに決めさせておき、それと一致したら、ランダムパスワードで再発行

こういうのでいいんかね?
アルゴリズムは複合できないとなるとMD5が妥当かなぁ
0324nobodyさん04/04/19 20:23ID:???
Windows上のApacheでPHPを稼動させています。
HTMLのフォームから値を受け取って、コマンドラインプログラムを実行しているのですが、
このときの権限って何になるんでしょうか?
UNIXならhttpd.confでユーザとグループを指定できますが、Windows版では無理ですよね?
domainのAdministrator権限で実行したいコマンドがあるんですが、何か良い手は
無いでしょうか?
0325nobodyさん04/04/19 20:59ID:???
>>324
標準だとSystemUserかな。
どちらにしても、それはPHP云々じゃなくてApacheの話題。
0326nobodyさん04/04/19 21:26ID:???
>>324
Apache用のアカウントを作ればいいだろ
032732404/04/20 00:14ID:???
>>325-326
ありがとうございます。
しかし、Apache用のアカウントを作るというのが???
Apacheのhttpd.confにApacheの実行権限を指定する
ところが無いと思うのですが・・・。

もう少しヒントをいただけませんか?
032832404/04/20 00:29ID:???
>>327
事故レスです。
なんとなく分かりました。NTのApacheサービス用のアカウントを
作って、Domain Adoministratorsに所属させるということですね。
やってみます。
0329nobodyさん04/04/20 19:05ID:nLs300iI
$host = getenv("REMOTE_HOST");
print"$host";
または
$host = $_SERVER['REMOTE_HOST'];
print"$host";

でリモートホストが取得できません。何も表示されないんです。
リモートホストの取得はどうやればいいんですか?
0330nobodyさん04/04/20 19:29ID:WtUQqgHt
329さま
恐らく
・DNS逆引きの設定が出来ていない
・ApacheならHostnameLookups Onという設定になっていない
とか、そういう事だと思います。
$_SERVER['REMOTE_ADDR']にはリモートホストのIPアドレスが格納されています。
このIPアドレスを指定して、DNS逆引きをする関数gethostbyaddrを呼び出せば、ホスト名を取得できます。
gethostbyaddr($_SERVER['REMOTE_ADDR'])を試してみてください。

http://php.benscom.com/manual/ja/function.gethostbyaddr.php

HostnameLookups On
0331nobodyさん04/04/20 19:30ID:nLs300iI
gethostbyaddrでいけたよ。
■ このスレッドは過去ログ倉庫に格納されています