【PHP】質問スレッドpart34【php】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2006/03/21(火) 10:19:14ID:???【ガイドライン】
質問の前にgoogleやマニュアルを検索してください。
http://www.php.net/manual/ja/
http://php.s3.to/namazu/
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。
◆質問後の注意
・質問者は必ずIDを表示させてください。
書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
過去スレ、関連リンク、FAQ等>>2-10辺り
0867nobodyさん
2006/05/13(土) 09:16:34ID:???1.とりあえずApacheの動作を確認する
2.PHPのマニュアル、インストールの章を読む
3.手順に沿ってインストール
0868spam業者のアドレス
2006/05/13(土) 11:50:55ID:???グーグルで調べたらインストール方法ぐらいいくらでもでてくる
0869nobodyさん
2006/05/13(土) 13:03:48ID:???そのファイルサイズを取得する方法はないでしょうか?
0872nobodyさん
2006/05/13(土) 14:07:20ID:???0873nobodyさん
2006/05/13(土) 14:24:48ID:l8EeBxVx$_SERVER['QUERY_STRING'] は test になりますが、
#(ハッシュ?)移行の文字列の取得はどうすれば良いでしょうか?
0875873
2006/05/13(土) 15:04:34ID:l8EeBxVxありがとうございます。やはり取得不可能でしたか
*.php?test-id30 などにして下記で飛ばすようにします。
$query = str_replace("-","#",$_SERVER['QUERY_STRING']);
header("Location: http://example.com/test.php?" . $query);
0876nobodyさん
2006/05/13(土) 15:21:17ID:???'/(\w+?)\-(\w+?)/'
0878nobodyさん
2006/05/13(土) 19:35:06ID:jirCYTM40879nobodyさん
2006/05/13(土) 21:56:48ID:???設定ミスだ。dll加えてないだけだろ。
つーかくだ質レベルの質問するな。
0880nobodyさん
2006/05/13(土) 22:21:22ID:jirCYTM40882nobodyさん
2006/05/13(土) 22:45:36ID:sR0lmg54>>867
Apacheはちゃんと動きます。
でも、PHPを実行させたときにどうやってApacheを使うかわかりません
0884nobodyさん
2006/05/13(土) 23:04:46ID:sR0lmg54(http://www.apache.jp/dist/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi )
動作確認(http://localhost/)OK
PHPのインストール(PHP 4.4.2)
ApacheとPHPの連携
conf/httpd.confが見つからないので書き換えできない
とりあえずここまで作業進めたんですけど。
PHPを自分の鯖で実行というのはどうすればできるのですか?
0885nobodyさん
2006/05/13(土) 23:24:47ID:???上でも言われたように、マニュアル読もうぜ。
ttp://www.php.net/manual/ja/install.windows.php
それと、apache2.2系列は内部的に大きく変更があったので、PHP側の対応が追いついていない。
2.0系列を使うよろし。
(snapshot版の方は使えるが、普通のユーザはそこまでして使う理由はあるまい)
0886nobodyさん
2006/05/14(日) 00:47:47ID:fxMAnAYJ0887nobodyさん
2006/05/14(日) 00:50:00ID:w7OEC7Loごめんなさい、Apache2.0.58でした。
マニュアル読んでみたのですが、
CGI バイナリの使用じゃなくてApache モジュールの使用で大丈夫なのですよね?
php4apache2.dllがPHPにもApacheにもないんですけど、別途ダウソ必要なんですか?
0889nobodyさん
2006/05/14(日) 00:54:19ID:w7OEC7LoZIPすらありませぬ・・・
0891nobodyさん
2006/05/14(日) 00:56:48ID:w7OEC7LoApacheですか?
PHPの中にはフォルダが3つとファイルがちょこっとです。
0892nobodyさん
2006/05/14(日) 01:21:46ID:???ttp://www.php.net/downloads.php
Installer なんか使うな。CGI only ってわざわざ書かれてるだろう。
ZIP 版使ってインストールやり直せ。
つーかマニュアルちゃんと嫁
0893878
2006/05/14(日) 10:52:28ID:Kk5ImAZs0894nobodyさん
2006/05/14(日) 12:59:06ID:w7OEC7Loすんません。
設定はできました。
index.phpを作って実行したのですけど、IEで開いても何もおきません。
Sleipnilで開くと、index.phpのダウンロードになります。
実行されないです¨
0895nobodyさん
2006/05/14(日) 13:34:17ID:???0897nobodyさん
2006/05/14(日) 14:55:31ID:???Windows版では簡易的(本当に簡易的)にSMTPを話す機能が
組み込まれてるから別途MTAを用意しなくても構わない。
WindowsだとスタンダードなMTAを用意するの面倒でしょ。
0898nobodyさん
2006/05/14(日) 15:55:45ID:???ところでmysql_query()とかで得たSQLの結果を、そのままmysqlみたいに表示するにはどうすればいい?
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
ってのは、地道にmysql_field_name()とmysql_fetch_row()とechoを駆使するしか無い?
echo "+----------+\n"
echo "| ", mysql_field_name($result, 0), " |\n";
echo "+----------+\n"
while($i = mysql_fetch_row($result)) {
echo "| $i[0] |\n";
}
echo "+----------+\n"
なんか面倒だね(w
0899nobodyさん
2006/05/14(日) 16:30:11ID:???0900nobodyさん
2006/05/14(日) 16:43:16ID:???そのレベルで面倒とか言われると…
そもそもmysql形式での表示が面倒くさいんだよな。
while($data = mysql_fetch_assoc($result)) {
foreach($data as $k => $v) {
echo "$k: $v "
}
echo "\n";
}
こっちの方がよほど簡単で利便性も高いと思うんだがダメか?
0901nobodyさん
2006/05/14(日) 16:51:58ID:???0903nobodyさん
2006/05/14(日) 17:03:16ID:???0904nobodyさん
2006/05/14(日) 17:14:57ID:???Mail Transfer Agent。sendmail/qmail/postfixなんかの、主にメールの配送を行うソフトウェアのこと。
ついでにMDA, MUAなんかを調べておくといいよ。で、お前に言いたいのだが
, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
0905nobodyさん
2006/05/14(日) 17:39:32ID:???Database: mysql
Database: test
って表示か。
これって何形式? >>900形式フォーマット?
>>901
マジでやってそうな香具師が居る所が恐ス(w
パスワード変更を、$passwd_done = system('sudo mysqladmin -u user password new_password'); とか。
0907nobodyさん
2006/05/14(日) 17:47:30ID:???while($data = mysql_fetch_assoc($result)) print_r($data);
でじゅーぶん
0909nobodyさん
2006/05/14(日) 18:05:11ID:???(
[Database] => mysql
)
Array
(
[Database] => test
)
1行はいいね。デバック向けかも。でも表示はたくさんあると凄ス(w
0910nobodyさん
2006/05/14(日) 18:32:02ID:???0912nobodyさん
2006/05/14(日) 20:54:40ID:Kk5ImAZs0913nobodyさん
2006/05/14(日) 21:10:30ID:???windowsの場合、SMTPサーバにネットワーク接続してメールを送信する。
相手のSMTPサーバ名はphp.iniのSMTPで設定する。
(マニュアルのwindowsの場合は.. という但し書きは、このためのもの)
ローカルホストだけで運用するなら、ローカルホストでSMTPサーバを立ち上げる必要がある。
プロバイダのメールサーバを使う事もできるが、プロバイダ側の方針で
pop befor smtpなどを使う必要があるのならあきらめれ。
(pearのパッケージに対応したものはある)
Unix系の場合は、メール送信プログラムを直接起動している
(なので、sendmailへのファイルパスを適切に設定する必要がある)
0914nobodyさん
2006/05/14(日) 21:13:38ID:???adodbでデバッグしているのですが、<html>がはじまる前にprintでデバッグ情報を
出力します。これによりHTMLがくずれます。
できれば別ウィンドウなどでデバッグ情報を出力したいのですが、よい方法ってないで
しょうか?
できれば、その他の自分が書いたHTML以前に出力するデバッグprintをまとめて
別ウィンドウで出したいのですが、よい方法ってないですか?
0915nobodyさん
2006/05/14(日) 21:24:03ID:???0916nobodyさん
2006/05/14(日) 21:40:03ID:yvznY1na一行コメントをつけたいと考えています。
できれば自分でつくってみたいのですが、最低限の(コメントする)機能を
一から解説しているサイトはないでしょうか?
googleで調べたらみつからなかったので、ヒントなどでもよろしくお願いします。
0917nobodyさん
2006/05/14(日) 22:16:25ID:???0918nobodyさん
2006/05/14(日) 22:40:10ID:???まあウィンドウズだとアドミン権限実行は普通だろうけど。
別に、phpにこだわらず一行掲示板のCGIスクリプトを拾って来て設置したほうが速いと思う。
ググっても見つけられないとか、解説サイト求めてる程度だし。php本でも買って一から覚える気もないでしょ?
0919nobodyさん
2006/05/14(日) 22:44:35ID:???0921nobodyさん
2006/05/14(日) 23:32:56ID:???http://pc8.2ch.net/test/read.cgi/php/1097759967/l50
せっかくだからPHPで掲示板作ってみませんか?
http://pc8.2ch.net/test/read.cgi/php/982779383/l50
オマエラPHPで掲示板つくれませんか?
http://pc8.2ch.net/test/read.cgi/php/1026233119/l50
0922nobodyさん
2006/05/14(日) 23:39:34ID:yvznY1naお、ありがとうございます。
現在、実は既にcgiで掲示板も動いていて、ムーバブルタイプも動いてたりするのですが、
別にブログほど大げさじゃなくて、自宅サーバであんまり思いの処理させるのも嫌だったので
じゃ、phpでやってみようかなとなったわけです。
というわけで、いってみます
0924nobodyさん
2006/05/15(月) 06:31:02ID:???というのをしたいんですが
これってSQL使わないと処理が重くなりすぎますか?
1つのリンクを1つのxmlファイルにしちゃうのが楽そうだなあと思っているんですが。
0925nobodyさん
2006/05/15(月) 06:31:57ID:???0927924 925
2006/05/15(月) 06:40:18ID:???キーワードといったほうがいいんですかね。
ディレクトリみたいな分類方法ではなく、
一つのリンクに対して複数のキーワードを指定するタイプのものです。
0928nobodyさん
2006/05/15(月) 08:14:18ID:???アクセス数にもよる。まあRDBMS使うことになるだろう。
リンク数>>関連ワード種なら関連ワードでインデクシングすればファイルでもそんな重くならないと思う
0929nobodyさん
2006/05/15(月) 08:28:16ID:???滅多に更新しないようなのなら、手元のスクリプトでHTML生成させてうpさせるだけでも十分だし。
0930894
2006/05/15(月) 09:08:33ID:JZwWRF2VLoadModule php4_module "c:/php/php4apache2.dll"
# sapi ディレクトリから php4apache2.dll をコピーするのを忘れないこと!
AddType application/x-httpd-php .php
# PHP 5 の場合
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
# php.ini の場所を設定
PHPIniDir "C:/php"
これですよね。
ちゃんと設定したのですが・・・
0931nobodyさん
2006/05/15(月) 11:46:54ID:xX88XBiyあるドメイン名が既に取得されているか、まだ取得されていないかを
確かめるにはどのようにすればいいでしょうか?
たとえば、『abc.com』の場合は1を返し、『ouashoghasoifpoashfua.com』
の場合は0を返す、というようにしたいです。
OS・バージョン:CentOSのバージョン2
やってみたこと:『$result = `whois abc.com`;』の結果に"not found"や"no match"が
含まれているかどうか、という判断基準では思った結果が得られませんでした。
よろしくお願いします。
0933nobodyさん
2006/05/15(月) 12:35:24ID:???http://pear.php.net/package/Net_Whois
0934nobodyさん
2006/05/15(月) 13:13:07ID:JZwWRF2Vどこか、PHP+Apacheを詳しく紹介しているサイトありませんか?
0935nobodyさん
2006/05/15(月) 13:13:48ID:???0936nobodyさん
2006/05/15(月) 14:30:17ID:xX88XBiyありがとうございます。
しかし会社の都合でPearは使えないので、純粋にPHPだけでやりたいのですが…
無理でしょうか?
0937nobodyさん
2006/05/15(月) 14:34:48ID:???特にNet_whoisなんて.phpファイル1個しか無いんだから。
これって純粋にPHPだけじゃないのか?
0938nobodyさん
2006/05/15(月) 15:16:12ID:xX88XBiyなるほど、そうだったんですね。知りませんでした。
ttp://www.res-system.com/weblog/item/572
↑これを参考にやってみたのですが、どうもWhoisの結果を返してくれるだけのようなのですが…
『ドメインが取得済みかどうか』を調べることもできるのでしょうか?
英語が全然ダメなものですみません…
0939nobodyさん
2006/05/15(月) 15:25:18ID:???そもそも、
>やってみたこと:『$result = `whois abc.com`;』の結果に"not found"や"no match"が
> 含まれているかどうか、という判断基準では思った結果が得られませんでした。
思った結果とはなに?
0940nobodyさん
2006/05/15(月) 15:34:51ID:xX88XBiy> あるドメイン名が既に取得されているか、まだ取得されていないかを確かめる
という部分です。たとえば、
if(eregi("not found") || eregi("no match")){
return 0;
}else{
return 1;
}
とした場合には、取得済みドメインのWhoisの結果でも「not found」という文字が含まれている場合があるため、
『取得されているかどうかの判定』にはならなかった、という意味で書きました。
わかりにくくてすみません。
0941nobodyさん
2006/05/15(月) 15:35:25ID:???>※ レジストリデータベースに該当するデータが存在しないだけであり、
>そのドメイン名などの登録を保証するものではありません。
>登録可能かどうかを確認する場合はhttp://jpsearch.jp/ をご覧ください。
なんてあるから、http://jpsearch.jp/にクエリー投げて、レスポンスを分析すれば
いいんじゃない?
0942nobodyさん
2006/05/15(月) 15:49:52ID:xX88XBiyやはり返ってきたデータを分析するしかないんですかね…
.comや.twなど様々なドメインに対応する必要があるので、レジストリごとに分析してやる必要がありそうです。
かなりめんどくさいですががんばります。
ありがとうございました。
0943nobodyさん
2006/05/15(月) 16:21:10ID:???ディレクトリ内に3つのファイルがあった場合、
unlink(a.gif);
unlink(b.gif);
unlink(c.gif);
rmdir(hoge);
で、ディレクトリ内のファイルは削除されますが、ファイルが5つあるけど
実際にデータベースに登録されているファイルは3つの場合、2つ削除出来ないから
エラーになります。
つまり、ディレクトリごとすべて削除する場合、どうすればいいのでしょうか?
0944nobodyさん
2006/05/15(月) 16:28:14ID:???何が難しいの?ハテ??
0945943
2006/05/15(月) 16:48:39ID:???ありがとうございます。下記のように書いてみたのですが、
unlink(.../files/hoge..): Is a directory in
というようなエラーが出ます。しかし、ディレクトリは削除出来ています。
どこがおかしいのでしょうか?
<?
$name="hoge";
$dir_name="../files/$name/";
$dh=opendir($dir_name);
while($file=readdir($dh)){
unlink($dir_name . $file);
}
rmdir("../files/$name");
closedir($dh);
?>
0946nobodyさん
2006/05/15(月) 17:09:21ID:???opendir($dir_name);した時点でカレント移動してて
ディレクトリのズレが生じてる気がする
相対パスじゃなくて絶対でやってみて
0947943
2006/05/15(月) 17:17:55ID:???$dir_name="../files/$name/";
↓
$dir_name="http://***.com/files/$name/";
しかし、こうするとfailed to open dir: not implemented inというエラーが出ます。
0948nobodyさん
2006/05/15(月) 17:43:43ID:???鯖によって違うと思うけど↓みたいなやつ
/virtual/user/public_html/
0949nobodyさん
2006/05/15(月) 17:46:34ID:???ディレクトリ関数つかったら
. カレント
.. 親ディレクトリ
のパスのあとにファイル名とかくるから
is_file()でファイルが確認してからunlinkして
0950nobodyさん
2006/05/15(月) 18:12:52ID:???イカすライブラリはありませんか?
0951943
2006/05/15(月) 18:20:41ID:???ちょっと変ですが、以下のソースで出来ました!アドバイスありがとうございました。
<?
$name="hoge";
$dir_name="../files/";
$dh=opendir("$dir_name/$name/");
$dir_name_path="$file_name/$c_id/";
while($file=readdir($dh)){
if(is_file($file)){
unlink($dir_name_path . $file);
}
}
rmdir("$dir_name/$name");
closedir($dh);
?>
0952nobodyさん
2006/05/15(月) 20:56:00ID:???解決したみたいだけど、ディレクトリの中の全ファイル削除ならそれで問題ないと思う。
ディレクトリの中に更にディレクトリとかあるのなら話しは別だけど。
>>945のエラーについては、$fileを出力すればエラーの理由が分かると思うよ。
0953943
2006/05/15(月) 21:33:59ID:???readdirを使うと0があるファイル名を読み込む時、FALSEと見なして
意図しない動作になると、リファレンスに記述がありました。
事実、それでずっと特定のファイルが削除されずに悩んでいたのですが、
ローマ字だけのファイルなどは問題なく削除されるので、0の問題があると思います。
上記のソースで、0を含むファイル名の場合の対処法をご存じであれば教えて下さい
0956nobodyさん
2006/05/15(月) 21:51:39ID:???readdirで正常動作しないのは「0」という名前のファイルのときであって
0を含むというだけなら全然関係ない。
別の問題があるんじゃないか?具体的にどんなファイル名が表示できてないのよ。
0957943
2006/05/15(月) 22:03:00ID:???マイクロタイム形式の「1140930321.jpg」こういうファイルです。
例えばtest.jpgとかindex.phpとかのファイルの場合は、問題なく削除出来ます。
同じソースでそういうわけなので、「0」の問題かと思っています。
かれこれ2時間悩んであれこれテストしてみたのですが、いきつく結果は
それかと思っているのですが・・。
0958nobodyさん
2006/05/15(月) 22:05:36ID:???それは0は関係ない。
ソースってこれか?
while($file=readdir($dh)){
if(is_file($file)){
unlink($dir_name_path . $file);
}
}
> if(is_file($file)){
を
if(is_file($dir_name_path . $file)){
にしてもダメか?
0959nobodyさん
2006/05/15(月) 22:07:24ID:???$dh=opendir("$dir_name/$name/");
$dir_name_path="$file_name/$c_id/";
なんでopendirの引数と$dir_name_pathの内容が違うの?
0960943
2006/05/15(月) 22:08:18ID:???if(is_file($dir_name_path . $file)){
これにしたら出来ました!!
自分ではどうしてかよくわからないのですが、、もう一度調べてみます。
何度もありがとうございました。
0961nobodyさん
2006/05/15(月) 22:09:34ID:???0962943
2006/05/15(月) 22:10:12ID:???すみません、色々とやってたので変更せずにそのまま投稿してしまいました・・。
ただしくは
$dh=opendir("$dir_name/$name/");
$dir_name_path="$dir_name/$name/";
です。。
0963943
2006/05/15(月) 22:11:45ID:???何か理由があるんですかね?全く持って不思議ですが・・。
私の書き方にも問題あると思いますが、動作しない理由が
よくわからないことがあります。リファレンス見ながらやっているのですが・・。
とりあえず、大変参考になりました。これでディレクトリ内一括削除はできそうです。
0964nobodyさん
2006/05/15(月) 22:15:46ID:???is_file($file)だとパスなしのファイル名になるから
実際はカレントディレクトリにそのファイルがあるかどうか、を判別してる。
多分、削除できてたローマ字ファイル名とやらは該当のディレクトリだけじゃなく
プログラムと同じ場所にも同名ファイルが置いてあって、
数字のファイル名は該当のディレクトリにしか無かったというオチ。
0965nobodyさん
2006/05/16(火) 02:12:09ID:luYBLTx6これでApacheとPHPを連携させるのですよね。
これで、localhostは見れたのですけど
C:\Program Files\Apache Group\Apache\htdocsに
test.phpを入れてhttp://localhost/test.php
でアクセスすると、
test.phpをダウンロードしますか?と出ます
何の設定が足りていないのでしょうか
0966nobodyさん
2006/05/16(火) 02:15:04ID:luYBLTx6レス数が950を超えています。1000を超えると書き込みができなくなります。