【PHP】下らねぇ質問はID出して書き込みやがれ 93
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/15(月) 19:23:06ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 92
http://pc11.2ch.net/test/read.cgi/php/1263035502/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0010nobodyさん
2010/02/16(火) 08:22:35ID:???少し趣旨が変わっちゃいますが、ウチはSubversionとかで管理してみては?
そんなに大きなプロジェクトじゃないなら大げさすぎますが。
0011nobodyさん
2010/02/16(火) 11:19:49ID:???phpはデフォルトだと拡張子がphpであるときのみしか動作しない
これはApache側の設定で行われている
なのでそれで動くはずはない
アクセスできたとしてもただのPHPのソースが表示されるだけだと思われ
headerでtext/plainと明示しない限りtext/htmlで出力されると思うので
<? ?>がxml宣言と解釈され何も表示されてないのをphpが実行されたと勘違いしてると思われ
htmlのソース見ればphpのソースが丸ごとでてくるなんてことはないか?
0012EM114-48-82-214.pool.e-mobile.ne.jp
2010/02/16(火) 13:35:10ID:???俺のことか996=OCNよ
俺はいま規制中だから書けねえよ
http://sports2.2ch.net/test/read.cgi/operatex/1266231624/53
勝手に人様を俺と勘違いするな
996 名前:nobodyさん[sage] 投稿日:2010/02/16(火) 09:39:35 ID:???
俺様をチンピラ呼ばわりか、日本人はksだな
俺様を馬鹿にするならPHP使うなよ。
0013nobodyさん
2010/02/16(火) 13:38:22ID:???0014nobodyさん
2010/02/16(火) 14:14:18ID:???0015nobodyさん
2010/02/16(火) 14:25:19ID:PEPOZ1Ssexec.php
exec("/var/www/html/test.php");
test.php
echo "test";
function test1(){
echo "test1";
}
これだとtestと表示はされますがtest1とは表示されません。
関数を指定出来る方法があればおしえてください。
0016nobodyさん
2010/02/16(火) 14:26:48ID:???CentOSのコマンドラインから送信できないのであればCentOS側の設定の問題
SELinuxの設定
今ならOP25B対策の設定をしていないとか
その次はiptablesの設定
Linuxのコマンドラインから送信出来るようになった後にPHPから送信できなければPHPの
設定ファイルの確認
0017nobodyさん
2010/02/16(火) 14:47:13ID:???includeなりrequireじゃダメなの?
require_once "/var/www/html/test.php";
test1();
001815
2010/02/16(火) 14:54:27ID:PEPOZ1Ss別の人間が作ってて、何やら変数名やら色々な部分が被っているようで
includeしたらえらいことになってしまいました。
なので出来ればexecあたりで別物として扱えればいいなと。
変数名を統一した方がいいのはわかってるんですが、なにぶんあっちのコード書いた
人間がもう不在なので出来るだけ変更はくわえたくないな〜というのが・・・。
過去ログみてたらexecで引数をいくつか渡せるみたいなので
exec.php
exec("/var/www/html/test.php" test1);
test.php
echo "test";
if(argv[1] == "test1"){
$argv[1]();
function test1(){
echo "test1";
}
}
みたいな感じにしてみようかと思います。
もしかしたたらもっとスマートなやり方あるのかもしれませんが・・・
0019nobodyさん
2010/02/16(火) 15:00:39ID:???それだとtest.phpに思いっきり変更加えているように見えるけど・・・
functionだけの問題なら、test.phpからfunctionだけコピーそて
別ファイルにしたほうがいいんじゃないか?
002015
2010/02/16(火) 15:03:07ID:PEPOZ1Ssこれくらいの変更が限界かな〜と・・・
このfunctionだけコピーしても色々と参照してるみたいでうまく機能しないという・・・
とても汎用性のないコードを書いてくれたもんで困ってました。
さすがに書き直す時間はないしこの変が妥協点かなと・・・
0021nobodyさん
2010/02/16(火) 16:08:01ID:???だと思ってんのか
0022nobodyさん
2010/02/16(火) 16:53:56ID:???汎用性のないコードを書いたやつとレベルが同じということにはならないのだろうか
00248
2010/02/16(火) 18:36:18ID:iRRBilsAありがとうございます、OSの設定から見直してみます。
phpから離れた話題で申し訳ないのですが、
最近よく言われるsendmailよりpostfix,qmailの方が良いというのは
こういう送信失敗トラブルもそちらのほうが解決しやすいということが
あるのでしょうか?
0025nobodyさん
2010/02/16(火) 18:54:25ID:???0026nobodyさん
2010/02/16(火) 19:06:12ID:???0027nobodyさん
2010/02/16(火) 21:38:36ID:???ありがとう。Apacheの設定も気になりますけど、中身が見えてもダメなんで、結局別ディレクトリにmvしますかね・・。
>>9でやった変更は自サイトのCSSを変えてサーバでチェックとかそんなんですのでここでSVNはちょっとw
0028nobodyさん
2010/02/16(火) 21:56:03ID:???そういうときは拡張子を統一して.htaccess(Apacheの設定)で
外からのアクセスを受けないようにすればいい
例えばxxxxx.php.20100216.0717の後に.backupってつけて
xxxxx.php.20100216.0717.backupっていうファイルにして
<FilesMatch "\.backup$">
Order allow,deny
Deny from all
</FilesMatch>
スレ違いだけどこんな感じか
0029nobodyさん
2010/02/16(火) 22:09:01ID:???【PHPのバージョン】php5
【連携ソフトウェア】mysql
【質問内容】
自分のレンタル鯖に指定したURLのファイルをPHPを使ってダウンロードさせて保存させるのは可能でしょうか?
0030nobodyさん
2010/02/16(火) 22:21:28ID:???0031nobodyさん
2010/02/16(火) 23:16:48ID:???ちゃんと対応しといたほうがいいと思うぞ
0032nobodyさん
2010/02/16(火) 23:59:48ID:???httpd.confの
AddHandler php5-script .php
がおかしいみたいです。これを消して再起動するとxxx.phpもxxx.php.20100216も実行できずソースのテキストそのものが出てきます。
でも>>28さんの方法で解決したのでここはまあいいじゃないですかw
いろいろありがとうございました。
0033nobodyさん
2010/02/17(水) 02:33:27ID:???【PHPのバージョン】php5.26
【質問内容】
class foo {
static $cash=array();
function foo($id){
if (self::$cash[$id]) return self::$cash[$id];
SQLとかごにょごにょ;
self::$cash[$id] = $this;
}
}
という風にキャッシュを行おうとしていますが、2回目以降の生成で空のプロパティを持ったオブジェクトが帰ってきてうまくできません。
これは言語仕様としてうまくいかないものでしょうか?
それとも、他の部分(とくにごにょごにょの部分)に原因があると見るべきでしょうか?
0034nobodyさん
2010/02/17(水) 02:35:47ID:???003533
2010/02/17(水) 02:38:09ID:9AFUUUC4専ブラでいつもsageっぱなしの癖が出てしまいました
申し訳ありません。
0036nobodyさん
2010/02/17(水) 02:51:32ID:???あと$cashじゃなくて$cacheじゃね?
0037nobodyさん
2010/02/17(水) 02:53:05ID:???まぁそれは冗談だけど以下参考までに
<?php
class Test{
public static $my_static = 0;
public function addN($n) {
self::$my_static += $n;
}
}
$a = new Test();
$a->addN(1);
var_dump($a::$my_static);
$b = new Test();
$b->addN(1);
var_dump($b::$my_static);
結果:
int(1)
int(2)
0038nobodyさん
2010/02/17(水) 03:19:21ID:9AFUUUC4確かにそうですね・・・cashでは現金の方になりますね
指摘ありがとうございます。
javaをやっていたせいだと思うのですが、
関数の中に入れると気分的になんか嫌なんです・・・
入れないとデメリットが生じるものなのですか?
>>37
やっぱり残るものですよね
static function getInstanceとかやるべきなんでしょうか
他のソースに手を入れる事になるので、コンストラクタの中でやってみようと思ったのですけど
0039nobodyさん
2010/02/17(水) 04:01:56ID:???file_get_contents で取得して、
head の css のリンク部分だけ変えてるのですが、
もっとスマートな方法ってありますか?
0040nobodyさん
2010/02/17(水) 05:18:08ID:???0041nobodyさん
2010/02/17(水) 08:54:37ID:???コンストラクタでキャッシュを返してるつもりだけど
コンストラクタはインスタンス生成後に自動的に呼ばれるただのメソッド
なのでそのコードだと毎回新しいオブジェクトを作成して
キャッシュがあれば初期化しない、になってしまってる
やるなら言う通りstaticなファクトリメソッドか、別にキャッシュを返すクラスを実装するべきだね
0042nobodyさん
2010/02/17(水) 14:46:58ID:9AFUUUC4生成されたインスタンスがどこにいくのだろうと思って調べてみたところ、
コンストラクタでの返り値は無視されるというのが見つかりました
キャッシュを返せないわけですね
素直にgetInstanceを実装してきます。
返答してくださった方々、ありがとうございました
0043nobodyさん
2010/02/17(水) 18:31:30ID:???これってUTF-8で取り出せないかな?
文字化けしちゃうんだよね
アクセスが糞っていうのは承知でお願いします。
0044nobodyさん
2010/02/17(水) 18:44:15ID:???文字化けの原因を調べて対処すればいいだけじゃないの?
004543
2010/02/17(水) 18:48:40ID:???自分が糞でした
0046nobodyさん
2010/02/17(水) 20:03:24ID:???糞でも。
0047nobodyさん
2010/02/17(水) 20:20:47ID:???004843
2010/02/17(水) 20:24:31ID:???ODBCドライバ事態がSJISでやりとりしてるぽくて、
取り出した時点で一部の文字が?になってる。
だから文字コードを変換しても意味が無いみたい。
ちなみに外国語なんだけど、mdb上ではちゃんと格納されてるです。
mdbのデータ型はメモ型です。
>>45
自分が糞ならがんばって肥料くらいまでにはなりたい
>>46
肥やしになれたら報告します
0049nobodyさん
2010/02/17(水) 23:02:50ID:lyRzhjAYfile_get_contentsの引数なのですが下記Basic認証file_get_contentsするソースで
Warning: file_get_contents() expects at most 2 parameters, 3 given in /path/to/hoge.php on line 23
とエラーが表示されます。
http://jp.php.net/manual/ja/function.file-get-contents.php
を見ると4と5でストリームコンテキスト?の可否があるようなのですが、4.4上で下記の代替え方法はありますでしょうか?
$params = "status=". rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
0050nobodyさん
2010/02/17(水) 23:47:15ID:???0051nobodyさん
2010/02/18(木) 00:00:12ID:???0052nobodyさん
2010/02/18(木) 00:22:59ID:???古いPEARのほうがライブラリは多い(=できることが多い)ので完全に代替には至ってない
ていうかスレタイ嫁
0053nobodyさん
2010/02/18(木) 00:23:39ID:???$ch = curl_init();
$post = array(
//POSTするデータ
'status' => rawurlencode($message),
);
$option = array(
CURLOPT_URL => "http://example.com/", //URL
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST", //POSTメソッド
CURLOPT_POSTFIELDS => $post, //POSTで送られるデータ
CURLOPT_HTTPAUTH => CURLAUTH_BASIC, //認証方法
CURLOPT_USERPWD => "example:password", //パスワードとユーザー名を"[username]:[password]" 形式で指定
);
curl_setopt_array($ch,$option);
echo curl_exec($ch);//結果を出力
cURLならこんな感じ、実際に動かしてないからミスがあるかもしれない
0054nobodyさん
2010/02/18(木) 00:29:45ID:???0055nobodyさん
2010/02/18(木) 00:39:31ID:???0056nobodyさん
2010/02/18(木) 00:49:13ID:???005749
2010/02/18(木) 03:10:20ID:+u9lCEUSだいたい方法ありがとうございました
いただいたコードでcurl_setopt_arrayがバージョン5.xが必要でしたが関数名でぐぐったところ
http://php.plus-server.net/function.curl-setopt-array.html
見事に下位互換するコードがありました。助かりました!一応転載しておきます
ーーーー以下転載ーーーーーーーーーー
PHP 5.1.4 より前のバージョンでこの関数と同等の操作をするには、次のようにします。
例2 curl_setopt_array() の独自実装
<?php
if (!function_exists('curl_setopt_array')) {
function curl_setopt_array(&$ch, $curl_options)
{
foreach ($curl_options as $option => $value) {
if (!curl_setopt($ch, $option, $value)) {
return false;
}
}
return true;
}
}
?>
0058nobodyさん
2010/02/18(木) 03:55:17ID:???えーと、
phpのDOMで、
$sl->setAttribute( 's', $name );
みたいに使いたいんですが、
$nameに日本語入れると、受け手で文字記号になってしまいます><
どうすればいいのでしょうか?!
0062nobodyさん
2010/02/18(木) 13:11:37ID:???0063EM114-48-53-20.pool.e-mobile.ne.jp
2010/02/18(木) 13:33:22ID:JDgmKlSP0064nobodyさん
2010/02/18(木) 18:20:59ID:XBktE18DHTMLページで<img scr="<URL>">を埋め込んだところ、imgタグを貼ったURLが取得されてしまい、
そのページのリファラが取得できません。
うまく取得する方法があったら教えてください
0065nobodyさん
2010/02/18(木) 18:22:01ID:???0066nobodyさん
2010/02/18(木) 18:23:49ID:XBktE18D0067nobodyさん
2010/02/18(木) 18:24:43ID:XBktE18Dありがとうございました
0068nobodyさん
2010/02/18(木) 18:26:28ID:NVBHLzZ00069EM114-48-61-7.pool.e-mobile.ne.jp
2010/02/18(木) 18:28:36ID:1SIrdwKU今時のレンタルサーバならPHPぐらい使えるだろzk
そんなPERL時代の名残みたいな事しないでPHPの$_SERVERでとりゃあいいだろクズ
0070nobodyさん
2010/02/18(木) 18:43:05ID:???phpからfirefoxやIEなどを起動しキャプチャを撮ってる。
ここらへんが参考になるかな
http://www.phppro.jp/news/367
http://zapanet.info/blog/item/955
0071nobodyさん
2010/02/18(木) 20:19:52ID:???中卒は帰れ^^;
0072EM114-48-61-7.pool.e-mobile.ne.jp
2010/02/18(木) 20:20:46ID:???0074nobodyさん
2010/02/18(木) 21:24:15ID:???JavaScriptで取得したリファラを、JavaScript上に記述したimgタグに埋め込んだPHPのURLに渡す。
0075nobodyさん
2010/02/18(木) 21:26:31ID:???0077nobodyさん
2010/02/19(金) 02:32:41ID:???0078nobodyさん
2010/02/19(金) 02:45:59ID:rkYeDCsTsession_start()というメソッドがありますが、これをベタに使うことはあまりないのかな?
セッション管理関連のモジュールがあれば教えていただけないでしょうか
0080nobodyさん
2010/02/19(金) 10:58:51ID:???標準で用意されているセッション関数を利用してください
自前で用意するとセキュリティ上の問題が起こるかもしれません
008178
2010/02/19(金) 12:04:46ID:rkYeDCsT>>80
丁寧にありがとうございます。
フレームワークは使う予定が無いので、組み込みのセッション関数とPEAR:Authを検証して決めたいと思います。
0082nobodyさん
2010/02/19(金) 12:35:00ID:???0083nobodyさん
2010/02/19(金) 12:39:38ID:???0084nobodyさん
2010/02/19(金) 13:05:03ID:???pearに限らず外部のライブラリはPHPで書かれたスクリプト。
圧倒的にバイナリのほうが高速に動くので標準関数だけでは出来ないことがある場合のみライブラリを使う方が良い
0085nobodyさん
2010/02/19(金) 13:07:32ID:???0086nobodyさん
2010/02/19(金) 13:11:25ID:???結局同じようなモノを作る羽目になると思うけど
あとPECLはCだよね。
0087nobodyさん
2010/02/19(金) 13:23:28ID:???勉強目的以外で車輪の再発明は無駄
>>84の所は毎回標準関数だけで開発してるのか?
違うだろ?フレームワークとか自社のライブラリ的なモノ使ってるだろ?
0088nobodyさん
2010/02/19(金) 13:25:17ID:???例えば?
0094nobodyさん
2010/02/19(金) 13:44:31ID:???0095nobodyさん
2010/02/19(金) 14:11:28ID:???会社的にそれ持ったら殺されるわ。
0096nobodyさん
2010/02/19(金) 14:37:26ID:???教授や講師に言われたけど、PHPってそんなにお笑い言語なの?
PHPはweb入門の登竜門として考え慣れたら他の言語に移れと言われたけど
PHPはGREEとかでも使われてるし謎です
0097nobodyさん
2010/02/19(金) 14:39:08ID:???ID出すわけにいかないので>>96は無視して下さい
他のところさがして聞いてきます
0098nobodyさん
2010/02/19(金) 14:42:49ID:???0099nobodyさん
2010/02/19(金) 14:56:56ID:???webアプリ経験:4年以上
PHP経験:2年以上
携帯開発経験
●単価
MAX40万[150-210h]
0100nobodyさん
2010/02/19(金) 15:34:35ID:ImlyfveR【PHPのバージョン】5.2.9
【質問内容】
スレチだったら申し訳ないのですが・・・
isleのサーバーに移転することになったので、isleのコントロールパネルにて旧サーバーからディレクトリコピーツールを使用しました。
移転先プレビューサーバにて確認してみたところphpが表示されず500エラーが発生しました。
info.phpでテストしてみたところ
・ホームディレクトリ直下のphpファイルは正常動作する
・ホームディレクトリに作成したフォルダ内のphpファイルは動作しない (ex.http://〜〜〜/test/info.php が動作しない)
・動作しないphpについてはソースの中身は関係ない模様(htmlのファイルの拡張子をphpに変えただけでも動作しなくなる)
・php以外のファイル(html,csv)はディレクトリがどこでも正常に動作した
・問い合わせたところ、phpのバージョンが4になっているので動作しないとのこと
・旧サーバーはPHP4 新サーバーはphp5 に対応
ホームディレクトリ以外のphpファイルは動作しない設定になっていると思うのですが、どう設定すればいいのでしょうか?
0101nobodyさん
2010/02/19(金) 15:44:30ID:???この動作しないというのはどういう状態?エラーかなんかが出てる?
0102100
2010/02/19(金) 15:46:24ID:ImlyfveR500エラーが発生します。
0103nobodyさん
2010/02/19(金) 16:20:24ID:???そういう偏見をもつ人間が先生なのか、かわいそうだね
PHPは道具にすぎないのだから別にお笑い言語でもなんでもないよ
使い手が生かせるか生かせないかだろ
0105nobodyさん
2010/02/19(金) 16:33:11ID:???変な .htaccess を置くと500エラーが出るよ。
<FilesMatch "\.php$">〜</FilesMatch> とか
AddType, AddHandler 辺りがどうなってるか確認。
0106100
2010/02/19(金) 17:15:21ID:ImlyfveR>>105
ご指摘の通り 旧サーバーから移行されていた .htaccess が原因だったようです。
修正をかけて正常に動作するようになりました。
ありがとうございました。
0107nobodyさん
2010/02/19(金) 18:03:27ID:???どうしたら解決できますか?
0108nobodyさん
2010/02/19(金) 18:37:35ID:???0109nobodyさん
2010/02/19(金) 18:45:00ID:???こっちの方が回答得られると思います
http://pc11.2ch.net/pcqa/
■ このスレッドは過去ログ倉庫に格納されています