トップページtech
1002コメント357KB

【PHP】下らねぇ質問はここに書き込みやがれ 4 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/03/12(土) 23:25:33.88ID:j4grSBgs
PHPに関する下らない質問用避難スレです。
まず読むこと【PHPマニュアル】
http://www.php.net/manual/ja/

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 3
http://echo.2ch.net/test/read.cgi/tech/1447495088/
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
0253デフォルトの名無しさん2016/04/05(火) 11:42:29.01ID:oEPANDny
>>251
PHPにおける変数のスコープを理解することは重要

>グローバル変数が自動的に関数で使用可能で ある C 言語と少々
>異なっていると気がつかれるかもしれません。C言語のような場合、
>グローバル変数を不注意で変更してしまうという問題を生じる可能性
>があります。PHP では、グローバル変数は、関数の内部で使用する
>場合、関数の内部でグローバルとして宣言する必要があります。

http://php.net/manual/ja/language.variables.scope.php
0254デフォルトの名無しさん2016/04/05(火) 12:08:31.00ID:5k7a1AT7
【OS名】MacのMAMP
【PHPのバージョン】5.6.10
【連携ソフトウェア】なし
【質問内容】
こちらのページの、ページ数がいくつあるかをスクレイピングで取得したいです。
http://www.amazon.com/gp/offer-listing/0996275460/?condition=new
このページの場合だと、4という数字を取得したいです。

<!DOCTYPE html>
<html lang = "ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>テストプログラム</title>
</head>
<body>

<?php
$dom = new DOMDocument;
@$dom->loadHTMLFile('http://www.amazon.com/gp/offer-listing/0996275460/?condition=new');
$xpath = new DOMXPath($dom);

$num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a');

var_dump($num_pages);
echo $num_pages;
?>

</body>
</html>
0255デフォルトの名無しさん2016/04/05(火) 12:11:59.63ID:5k7a1AT7
続きになります。

PHPの入門書を何回か読んで、ネットの情報を読んで手探りで実践しているところです。
実行した所、このような結果が帰ってきます。
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }

$num_pagesのlengthのintが0ということは、
どこかでミスがあり$num_pagesに何も格納されていないと思い、
いろいろ試してミスを探してみましたがわかりませんでした。

$num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a');
の所にミスが有ると思い、いろいろなパターンで試してみました。

$num_pages = $xpath->query('/body//div[@class="a-text-center a-spacing-large"]/ul/li[last()-1]/a');
などと、
XPathの正規表現を確認しながら、
[@class=""]やlast()などを削除して余計なものをつけずに
なんでもいいから値を取得しようとしても取得できず、

いろいろなパターンを試してみましたが、
結果は
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
ばかりで変わりませんでした。

勉強不足で非常につまらない所で間違えているとは思うのですが、
今の私にはどこが間違っているかわかりませんので、
お知恵を貸しいただけませんでしょうか。

ご指摘いただけますと非常に嬉しく思います。
0256デフォルトの名無しさん2016/04/05(火) 12:49:13.36ID:PBrOQNL5
>>254
まずは取得したHTMLの内容を見ること。
そしてそこに書かれている内容を読むこと。
0257デフォルトの名無しさん2016/04/05(火) 13:01:19.31ID:w0vmBuKb
file_get_contents して正規表現で抜き出せばいい
http://php.net/manual/ja/function.file-get-contents.php
0258デフォルトの名無しさん2016/04/05(火) 13:02:56.33ID:hR4UL7wD
>@$dom->loadHTMLFile('http://www.amazon.com/gp/offer-listing/0996275460/?condition=new');

@なんてつけてエラー制御してるから肝心なことがわからないんやで
503返ってきてるしBOTと見なされて拒否られてるってところだろう
ストリームコンテキスト作成してみるとかcURL使ってみるとか
0259デフォルトの名無しさん2016/04/05(火) 14:11:45.62ID:ruInOaYl
カウントして、ファイルに書き込んでリダイレクトすると、カウントが1つ増えるんだけど、なにが原因でしょうか…
0260デフォルトの名無しさん2016/04/05(火) 14:27:24.69ID:F6iG++QK
>>254
$dom = new DOMDocument;
@$dom->loadHTMLFile('http://www.amazon.com/gp/offer-listing/0996275460/?condition=new');
$xpath = new DOMXPath($dom);

$num_pages = $xpath->query('//ul[@class="a-pagination"]/li[last()-1]/a');

$num_pages がおかしいなら、その前の、$xpath もチェックする。
それもおかしいなら、その前の、$dom もチェックする

こういうように、周辺の変数の内容を、すべて見るのが早い。
それか、1行ずつデバッグして、変数の内容を見ていく
0261デフォルトの名無しさん2016/04/05(火) 14:48:14.91ID:hR4UL7wD
>>259
コードも出さなきゃ答えようがない
0262デフォルトの名無しさん2016/04/05(火) 16:31:14.94ID:yO8yjDkc
例えばなんだけど DBに接続するためのユーザー名とパスワードを記述したphpファイルがあるとして
/web/lib/userdb.php(600)
みたいな形にしてwebからアクセスできないようにすればたとえそのメインphpファイルがサーバーのミスやなんかしらの際に流出してもdbのIDとパスワードは守れる?
0263デフォルトの名無しさん2016/04/05(火) 16:37:11.54ID:Urfcnp8R
>>262
dbのIDとパスワードが漏れても外部からアクセスできないようにしとけよ
0264デフォルトの名無しさん2016/04/05(火) 16:41:19.57ID:+K5F7tY8
Webに公開されていないパスに置けば大丈夫では
0265デフォルトの名無しさん2016/04/05(火) 19:24:34.83ID:izAp1z4+
>たとえそのメインphpファイルがサーバーのミスやなんかしらの際に流出しても

ファイル自体が流出したらパーミッション関係ないがな。
0266デフォルトの名無しさん2016/04/05(火) 20:35:59.23ID:H8S937SL
WordPressなんかは、ユーザー名とパスワードを記述したファイルも公開領域だけどね。
0267デフォルトの名無しさん2016/04/05(火) 22:24:24.93ID:cf9M5ih9
MySQLの部分一致 
%ae%
とかやると
abcdeのレコードが一致してしまうんですがどうすればいいんでしょうか

つまり何が言いたいかというと
続いてない文字列が一致してしまう
先頭と端が一致してるのも取り出してしまう
0268デフォルトの名無しさん2016/04/05(火) 22:34:15.27ID:1mo6kAvy
それはおかしい。
SQLとその付近のコードはどうなってんの?
0269デフォルトの名無しさん2016/04/05(火) 22:34:20.37ID:UC4UBEI8
MySQLのほうのログ漁って
想定通りのクエリが飛んでるか調べるとか?
0270デフォルトの名無しさん2016/04/05(火) 22:38:27.01ID:cf9M5ih9
ああ、まじですか
やっぱりおかしいみたいですね
コードを見直してみます。
ありがとうございました
0271デフォルトの名無しさん2016/04/05(火) 22:42:55.17ID:cf9M5ih9
>>269
なるほど。。
0272デフォルトの名無しさん2016/04/05(火) 23:00:19.33ID:gOJOQ9cJ
未だに開発環境でも常にApache+PHPでやってた骨董品なんだけど, PHPのビルトインWebサーバめっちゃ便利やな, 軽んじてたわ
0273デフォルトの名無しさん2016/04/06(水) 06:32:29.83ID:cc6aqB73
全レススマソ
>>263 それだわ 有難う
>>264 一応そうしてるけどそれでもなんか怖くて・・・
>>265 エッ
0274デフォルトの名無しさん2016/04/06(水) 06:58:14.77ID:chXvhDzz
メインの文字読み落としただけだから気にしないでくんろ
0275デフォルトの名無しさん2016/04/06(水) 11:48:54.09ID:CSfgqPLP
>>267ですが一日中考えた結果
前方一致と後方一致の両方が一致しているので取り出してしまっている

という結論に至りました
あいまい検索って本当にあいまいなんですね
0276デフォルトの名無しさん2016/04/06(水) 11:58:30.75ID:MS+65iNt
>>273
えっ いや違和感あるんだが
メインのphpが流出する⇒db接続に使う資格情報が書いてあるっぽいファイルのパス・名前が流出する、ってことで
で、このdb用ファイルの内容をどのように取得する?

db用ファイルがwebからアクセスできる場所にある場合でも、生txtであったりあるいは設定ミス等によって
webから直アクセスして実行結果ではなくファイル内容そのものが読める場合でない限りは資格情報は盗まれない
<?php $id='user'; $pass='password'; ?> と書かれたファイルを.phpとして実行しても何も返されないわけで
逆に生txtか生txt同然であったならば、chmod 600してても何も防止できない

好きに.php等をアップロード&実行されてしまう状況ならばどこに置いても一緒

mod_phpやfpmからアクセス可能じゃなかったらそもそも使えない

あとはサーバに侵入される、あるいは雑居ビル状態の共用サーバ使ってる場合等
前者はroot権限かdb用ファイルの所有権がないならchmod 600も一応意味があるが侵入されてるなら時間の問題
後者は利用者ごとに実行ユーザを厳しく切り替えてるなら意味を見出せなくもないけど
DocumentRoot外にファイルを配置できる時点でなさげ

だいたいdb接続情報のパスが漏れたらその時点でやばいっつーならmediawikiとか使えなくね
0277デフォルトの名無しさん2016/04/06(水) 12:43:28.61ID:cc6aqB73
サーバーのミスって.htaccessの設定ミスとかそう言う話だよ!
後は何らかの原因でユーザーログイン出来てしまった時にrootのパスワードがわからない状態でソースが覗けなければいいかな程度
そっから先は俺らの考える事じゃないし・・・
0278デフォルトの名無しさん2016/04/06(水) 13:26:05.81ID:K9SGMphy
>>275
いやその結論はおかしい。mysqlスレいこ
0279デフォルトの名無しさん2016/04/06(水) 14:09:25.41ID:ZQg6xGn/
>>275
んなわけないだろ
where句全部書いてみろよ
つかSQL作ってるコードを貼ってみろよ
0280デフォルトの名無しさん2016/04/06(水) 14:58:23.75ID:MS+65iNt
>>277
領分で想定範囲に線引き入れるならばshellに入られる事態がすでにお手上げ状態だと言っても良いと思うが
それはそれとして、webから覗ける範囲に所有者以外が書き込み可能なファイル/ディレクトリが1つもないことの確認を推奨
メインの.phpにセキュリティホールがあればやはり全部無駄になるからこれも(ありがちなのがアップローダ機能)
ところで.htaccessでどんな設定書いてんの
0281デフォルトの名無しさん2016/04/06(水) 15:28:04.17ID:gq7o88bt
ドット始まりのファイル名にしとけばよほどのことをしてもWeb経由では見られないんじゃね
0282デフォルトの名無しさん2016/04/06(水) 16:07:22.70ID:b8EzfBRn
Laravelなら安心!
0283デフォルトの名無しさん2016/04/06(水) 16:22:16.52ID:zh0XMq5l
>>281
これは隠しファイル扱いですよという一種の約束事なので、
知っていれば自由に読み書きできてしまう
0284デフォルトの名無しさん2016/04/06(水) 18:58:39.31ID:Y+jXv/sp
超初歩的な質問で申し訳ないのですがXSS対策のエスケープで事前に
function h($s) {
return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}
を作っておくことを学んだのですが
$sはそのphpでは上記部分以外では見つからないのですがどういう意味を持つ引数なのでしょうか?
また事前に$sの宣言を行わなくても良いのはなぜでしょうか?
0285デフォルトの名無しさん2016/04/06(水) 19:22:28.16ID:xAgh0Pyq
引数って言葉使ってるけど、関数が何か理解してますか?
0286デフォルトの名無しさん2016/04/06(水) 19:23:39.55ID:b8EzfBRn
Manual見よう
0287デフォルトの名無しさん2016/04/06(水) 19:45:33.76ID:ZQg6xGn/
>>283
httpdのデフォルトの設定でドット始まりは見せないようになってるでしょ
.htaccess の設定ミス程度ではこの動作は変わらないから、余程のことをしない限りは安全でしょ
0288デフォルトの名無しさん2016/04/06(水) 19:50:32.95ID:xAgh0Pyq
Apache限定の話だけどネ
0289デフォルトの名無しさん2016/04/06(水) 22:06:02.77ID:chXvhDzz
PHPでは$_POSTなどのスーパーグローバルは直接操作するなと言われているけど、
書き換えることが出来てしまうということが、
バリデーターのテストコードを書く上で、物凄く便利であるということに気付いた春。
0290デフォルトの名無しさん2016/04/06(水) 23:11:26.49ID:q1HrDxSz
javascriptやってて最近php始めたんですが、文字列や正規表現などの記述でphpはイライラします。phpは何でjavascriptみたいな柔軟な記述が出来ないのでしょうか?phpなんて作った奴は誰ですか?
0291デフォルトの名無しさん2016/04/06(水) 23:20:26.16ID:HSAkNgFK
>>284
function h($s) {
return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}
echo h($s);

function h($s) { の $s は、仮引数(parameter)であって、
関数のための受け渡し用の仮の変数だから宣言はいらず$vとか好きにしていい。
echo h($s);の $s は、実引数(argument)であって、
実際に流れの中で利用されている変数で、宣言や代入され値が入っている。
0292デフォルトの名無しさん2016/04/07(木) 00:34:49.43ID:838jiYpM
まずjsは柔軟じゃない。ガバガバなのだ
0293デフォルトの名無しさん2016/04/07(木) 03:41:23.49ID:861uWPB3
Apacheともう一個なんだっけ最近上がってきてたやつ あれの評判どうなんだろうね
0294デフォルトの名無しさん2016/04/07(木) 04:18:50.70ID:PO5E9BnC
スレチ 独り言 質問しっぱなしが最近大杉
こっちに引っ越してきてから過疎スレそのものだったのに
春休みで同じやつがやってるんだろ
0295デフォルトの名無しさん2016/04/07(木) 13:08:16.18ID:O69mbgIK
php-cs-fixerをインストールしたらPHPのバージョンが勝手に7に上がってました。OS標準(Mac)のバージョンに戻すことは可能ですか?
上書きされてしまったのでしょうか
0296デフォルトの名無しさん2016/04/11(月) 13:57:00.23ID:pJYoLHo6
read.php ← conf.txt
write.php → conf.txt

こんな感じて特定の設定を保存しておきたいんだけど、おすすめの方法ないですか
自前で全部作らないとダメ?
0297デフォルトの名無しさん2016/04/11(月) 14:24:35.69ID:2HwASHVN
すみません、ページごとの閲覧数を表示できるPHPってありますか?
ワードプレスの「WP-PostViews」プラグインは知っていますが、ワードプレスではないサイトなので・・・
0298デフォルトの名無しさん2016/04/11(月) 14:28:52.63ID:cX0ZVNHx
>>296
おれは設定を array にした PHPコードにしてファイルに書いちゃう手をよく使う。
書く処理は作らなくちゃいけないが、読む処理は include するだけでいい。
0299デフォルトの名無しさん2016/04/11(月) 14:34:17.61ID:pHIRjOY+
>>297
http://tamae.2ch.net/test/read.cgi/php/1330980652/
0300デフォルトの名無しさん2016/04/11(月) 14:42:15.76ID:2HwASHVN
>>299

ありがとうございます。
質問してみました。
0301デフォルトの名無しさん2016/04/11(月) 14:58:26.31ID:zPYXS2gG
>>298
書く処理を作るくらいならばいっそserialize()してしまったほうが良くないか
以前試したときは速度的には配列だけの.php読み込みもcsv読み込みもunserializeもほぼ変わらない
ただ、設定ファイルをそれなりに頻繁に手で書き換えるなら配列.phpやcsvのほうが確かに便利
0302デフォルトの名無しさん2016/04/11(月) 15:28:56.19ID:cX0ZVNHx
>>296
設定ファイルの可読性を全く問わないなら serialize/unserialize を使うって手もあるね。
JSON形式で保存することにして json_encode/json_decode を使うって手もありそう。
0303デフォルトの名無しさん2016/04/11(月) 15:34:31.20ID:cX0ZVNHx
おお、かぶったw

>>301
おれも計ったけど、unserialize は結構遅かったような。
設定ファイルじゃなくキャッシュだが、それで serialize 使ってたのを array を使うようにした。
と言っても設定ならどのみち一瞬で読めるから出来合いでやれる方がいいかな。
0304デフォルトの名無しさん2016/04/11(月) 15:41:47.48ID:cX0ZVNHx
連投すまん
array でやるなら var_export が使えるのを思い出した。
おれは余計なスペースや改行だらけになるのを嫌って自前で書いたが、設定ファイルならむしろこっちの方がいいだろう。
0305デフォルトの名無しさん2016/04/11(月) 15:45:31.94ID:YMrMfC9q
ディブ アライン アライン

なんですかこれ
0306デフォルトの名無しさん2016/04/11(月) 16:34:07.85ID:PHHPdBbi
JSのTypeScriptみたいな、PHPを別言語から変換して使う言語はないのでしょうか?
静的型付け言語出身なので、動的言語に慣れなくて・・・
本当はjava鯖がいいのですが、共用鯖だと使えないところが多いので
0307デフォルトの名無しさん2016/04/11(月) 16:46:29.06ID:zPYXS2gG
>>303
実際やってることがほぼ変わらないからか、php5.6系ではいずれもほぼ同じだった
確認は定番のmicrotime(true)@cli、読み込むデータのサイズをバカみたいに大きくしても同様
真面目に考えるならopcacheとの兼ね合いを第一に考えるべき
…というかunserializeと他とで速度差が露骨に出るって.phpコード読み込みにopcache効いてましたってオチじゃなかろうな

var_exportは設定読み書きに使うにはちょっと読む処理を書かなきゃいけないような
0308デフォルトの名無しさん2016/04/11(月) 16:50:34.64ID:jGs+gPDI
そんな1回あたり1ms未満の戦いしても意味ないんじゃないの
1万req/sec超とかなら話は別だが
0309デフォルトの名無しさん2016/04/11(月) 17:45:50.42ID:cX0ZVNHx
>>307
ごめん、PHP5.1.6 で試したら serialize 結果をそのままファイルに吐いたのを userialize するのが一番速かった。
計った時のいろんな事情や条件がおぼろげで曖昧になってたよ。
速度比としてはこんな感じ。

A. serialize結果がファイル化されたものを、unserialize(file_get_contents('conf.txt)); する
B. serialize結果のデコードをPHPコード化(<?php $conf=unserialize([serialize結果の文字列化]); )したファイルを include する
C. var_export結果を PHPコード化(<?php $conf=[var_export結果]; )したファイルを include する
D. Cと似てるけど、余計な空白や改行を含まないファイルを include する

A 5.4
B. 14.7
C. 19.5
D. 12.6

サンプルデータは、適当なディレクトリツリーを array化したのにしてみた(A のデータファイルで 7KB規模)。

読み込みを include 一発で済ませられるようにするなら D、極簡単な読み込みコードを書くなら A だね。
データファイルの可読性や編集しやすさを取るなら C/D、読み取りパフォーマンス重視なら D、書き込みコードを簡単にするなら C だ。
JSON も試したかったけど今手元にあった環境では使えなかった。

>>308
それはその通り、ほとんど影響の無い時間を稼ぐのに無駄に苦労するのはただのアホだわな。
おれの場合は処理済みデータのキャッシュ化に使ったから読み取りパフォーマンスを重視したけど。
0310デフォルトの名無しさん2016/04/11(月) 18:38:16.01ID:jGs+gPDI
YAMLにしろよ
0311デフォルトの名無しさん2016/04/12(火) 01:59:13.91ID:vDLzdyvt
PHPの勉強にweb巡回ツールを作成中なのですが
現在はfire_get_contentsでHTMLを取得し、DOMDocumentからLoadHTMLでDOMドキュメントに変換し、それをsimplexml_import_domでxmlに変換し、xpathで要素を指定するといった方法を取っています。
しかし変換したxmlの中身のデータに元のソースコードの食い違いなど不審な点があったので、中身の要素を全て表示してみたところ、htmlソースの「::before」「::after」で指定されている部分のソースコードが取得出来ていないという事が判明しました。
調べてみたところこのタグはCSSでいじる段階になってからHTMLコードを追加するといったタグのようで、fire_get_contentsで取得したhtmlには含まれていないようです
こういった表示段階になって始めて表示される要素まで含めた完全なHTMLソースを取得したいのですが、何か良い方法は無いでしょうか。
よろしくお願い致します。
0312デフォルトの名無しさん2016/04/12(火) 02:12:44.98ID:NLppiuAm
>>311
PHPとは関係無い話になっちゃうけど、chrome かなんかのレンダラを使う方法があったような。
早い話、ブラウザのインスタンスを作ってそれを制御する感じ(もちろん物理的な画面は必要無い)。
スクリーンショットの取得なんかもできたと思うし、多分JSなんかで加工された後のDOMも取得できると思う。
やり方わかったら教えて。
0313デフォルトの名無しさん2016/04/12(火) 02:20:26.21ID:20poyVM6
cssの擬似要素だけが問題なら自分で展開すりゃいいんでないの

っていうかjavascriptでUA判定して内容切り替えとかしてたらどうすんの
0314デフォルトの名無しさん2016/04/12(火) 02:38:41.31ID:vDLzdyvt
>>312
やっぱり一旦ブラウザに読み込んでからhtmlを取得した方が確実みたいですね
設定作業が難しそうなので避けていましたが、セレニウムってのでそんな感じの事が出来ると思うのでもう少しやり方を調べてみようと思います

>>313
UAならリクエスト送る段階で偽装出来ると思うのですが、なるべく対応したいです
やっぱりページ更新のチェック位置が取得出来ない部分にあったら巡回不可能なサイトが出来てしまう訳ですし・・・

HTMLやCSSにはあまり詳しくないのですが、擬似要素での可変部分は内部的な記述で隠蔽しているという訳ではないんですね
自分で展開できそうならそちらも視野に入れて調べてみます、ありがとうございます
0315デフォルトの名無しさん2016/04/12(火) 03:01:29.60ID:20poyVM6
>>314
スクレイパなどではなくてほんとに汎用web巡回更新チェックか。cssの擬似要素は単純っちゃかなり単純なのですぐわかると思う

ところで素朴な疑問なんだけど
rssを使うとかならともかく生htmlを使って巡回・更新チェックを行う場合、同じく生htmlに吐かれたアクセスカウンターとかどうすんの?
さらに生htmlに実データが無くデータ取得から整形までクライアントに負わせ同時に確実な広告表示を実現してるサイト等の場合も
更新に関わらず内容が変化しうる、これはjsエンジン等を突っ込んだー、だけじゃ解決できない気がするんだけどこの辺どうなんだろう?
0316デフォルトの名無しさん2016/04/12(火) 03:29:34.82ID:vDLzdyvt
>>315
あまり詳しくはないのですが要素の位置に変化が無ければ値が変化しても特に問題は無いと思います
htmlが取ってこれればそれをdomに突っ込んでxmlに変換してxpath通せば特定要素だけを取ってくる事は出来るので
それでhtml上の更新時に必ず変化が起きる要素を一定時間ごとにチェックして変化が確認できたらログを保存してチェックデータを更新といった具合で実装しようと思っています
0317デフォルトの名無しさん2016/04/12(火) 03:32:39.65ID:w4romtCS
思い込みで話すとだめという例
0318デフォルトの名無しさん2016/04/12(火) 05:46:53.79ID:vDLzdyvt
しかしどうしても不思議なんだけど外部サーバから動かす時ってブラウザはどうやって用意するんだろ・・・
seleniumにブラウザのドライバがあってそれ使ってコマンド飛ばせばブラウザを動かせるってのは分かるんだ
そしてwindowsやらmacならフツーにfirefoxなりchromeなりインストールしたら使えるってのも分かる
しかし外部サーバにphpファイルをアップロードして使うって話になると肝心のwebブラウザはどうやって読みこませればいいんだろう
元からインストールされてるとも思えないしレンタルサーバにwebブラウザがインストール出来るのか、それともwebブラウザのexeファイルだけ置けば普通に使えるのか
そもそもレンタルサーバがGUI環境じゃなかった場合webブラウザってのはマトモに動くのか
php web driverってのがある以上何らかの手段はあるんだろうけど、レンタルサーバ上でセレニウムを動かすに当たって何をアップロードすればいいのかっていう必要なものが見えてこない・・・うーむ・・・
0319デフォルトの名無しさん2016/04/12(火) 09:22:36.97
>>318
めんどくさいので、
(1)node.jsが使えるレンタル鯖を借りて
(2)JS+Node.jsによるWebクローラー/ネットエージェント と言う本を買いなさい
0320デフォルトの名無しさん2016/04/12(火) 09:30:30.18ID:K20+5BP2
>レンタルサーバ上でセレニウムを動かすに当たって何をアップロードすればいいのか
いやいや、普通はルートでやるんですよ
VPSが最低要件
それとそこそこのメモリが必要になるでしょうね
そもそもクローラーをレンタルサーバでやる意味がわからないのだけれど・・・
自分のPCでいいじゃない
0321デフォルトの名無しさん2016/04/12(火) 10:42:50.72ID:PLXRZMCg
レンタルサーバーでそれやられたら負荷が高くて同居人に迷惑だな
0322デフォルトの名無しさん2016/04/12(火) 10:55:55.85ID:NLppiuAm
>>320
マナーの問題は置いておいて、こんな処理で root が必要?
パッケージマネージャみたいので入れるなら root を要求されるだろうけど、ディレクトリ一式上げれば動くんじゃないの?
0323デフォルトの名無しさん2016/04/12(火) 11:55:03.31ID:gTjFdqWa
PhantomJSとかその派生は使わんの?
0324デフォルトの名無しさん2016/04/12(火) 11:59:06.19ID:uMcJYrhA
>>322
FirefoxとXvfbが必要
結局JavaScriptで操作した分の対応ってだけで
DOMでない擬似クラスの:afterや:beforeはどうしようもないけど
0325デフォルトの名無しさん2016/04/12(火) 14:46:55.51ID:pjxLuk2S
ログファイルを利用してwebサービス的なものを考えてはいたんですがseleniumは負荷が激増しそうなのでやめておこうと思いますお騒がせしました
むしろ読み込んだhtmlデータを確実に破棄出来てるか、メモリリーク起きてないかが気になってきました
今までは使った変数とか適当に放置してましたがunsetで確実に破棄して行こうと思います
0326デフォルトの名無しさん2016/04/12(火) 16:06:33.46ID:xc/VnKsQ
レベルが高くで全然わからん
やっと$変数名っての覚えた
0327デフォルトの名無しさん2016/04/12(火) 17:46:29.87ID:ZuNPcNPl
PHPやろうと思ったら仮想サーバーとかSQL?とかいろいろ設定しないといけなくて手が出せない
なんていうか全部パッケージされてて解凍かインストールするだけでPHP初められる開発ソフトって何かないか?
0328デフォルトの名無しさん2016/04/12(火) 17:54:12.53ID:xc/VnKsQ
>>327
xampp
0329デフォルトの名無しさん2016/04/12(火) 17:56:37.42ID:pjxLuk2S
>>327
WebMatrix3ってのインストールして起動して新規で空サイト立ち上げたらホーム→新規→新しいファイル→PHPっての入れて
phpコード書くっぽい部分にecho 'test';って入れてから作ったファイル右クリして「ブラウザで起動」選んだら動くよ
mysqlとかwordpressとかも大体入ってる
0330デフォルトの名無しさん2016/04/12(火) 20:52:26.03ID:VhrT22lj
Propelって、コードを読めば読むほどアホが作ったんだなって分かる。
壮大なゴミクズだな。
0331デフォルトの名無しさん2016/04/12(火) 20:57:22.23ID:uMcJYrhA
php4時代の産物に文句言ってもしゃーない
0332デフォルトの名無しさん2016/04/12(火) 21:09:45.08ID:FIX7kEEP
何で今Propelなんや, Doctrineやろ
0333デフォルトの名無しさん2016/04/12(火) 21:33:32.50ID:VhrT22lj
既存プロジェクトだから。
新規ならDoctrineだって馬鹿らしい。
0334デフォルトの名無しさん2016/04/13(水) 00:09:44.78ID:pIZn+U3p
>>327
PHPやるために仮想サーバやデータベースは必要じゃないよ。
仮想サーバが必要なら入れないといけないし、データベースもそう。
深く考えすぎじゃないでしょうか。
0335デフォルトの名無しさん2016/04/13(水) 00:36:38.99ID:eHbmdEvw
>>333
おすすめORMおしえて
0336デフォルトの名無しさん2016/04/13(水) 03:31:33.91
>>327
土日でわかるPHPプログラミング
と言う本やな
自分のパソコン側ではなくてVirtualBoxにPHPやらデータベース入れて動かす方法
0337デフォルトの名無しさん2016/04/13(水) 04:22:33.01ID:799QV5+T
VirtualBoxで動作確認環境を構築するって仮想マシンのOSはLinux入れろってこと?
ローカルpcでphpのソース書いて、わざわざVM側にアップロードして動作確認するの?
開発する時はローカルにxampp入れてソース書いてはローカルで動作チェックしてってやらないの?
ローカルでチェックした後にLANにあるテストサーバや本番サーバにアップしたりしないの?
0338デフォルトの名無しさん2016/04/13(水) 04:39:51.30ID:SBj4pmRf
最低限php -l script-fileできりゃいいや

最近のphpはwindows版バイナリがvcランタイム必須なのがちょっと面倒
0339デフォルトの名無しさん2016/04/13(水) 05:45:48.69
>>337
Vagrantと言う仕組みが有って、ローカルのフォルダの内容をVM側に自動で同期出来る
ローカル側では秀丸エディタとかPhotoShopとか使えるわけで転送も不要、楽だろ

本番機との同期はGitにしなさい
ローカルで開発、SourceTreeでBitBucketにプッシュ、本番機でプル
バージョン管理もバックアップも出来る
0340デフォルトの名無しさん2016/04/13(水) 05:51:50.27ID:od2stSEV
IDEの設定でサーバと連携させる
実行したらFTPなりSCPなりでデプロイしてIEでの実行結果がIDE内に表示される
0341デフォルトの名無しさん2016/04/13(水) 07:30:03.80ID:m+b23jHk
>>335

一般に出回っているもので、まともなORMなんてPHPには無いよ。どれもこれもクソ。
PDOがとても優秀なんだから、PDOをラップしたライブラリを自作すればいいと思う。

何年か前にPDOをラップしたDataMapperの作り方を詳細に書いてくれてたページがgoogle検索の上位にいて、
オレはそれを参考に作って使ってる。
さっきちょっと検索してみたけど、今はどうでもいい内容の薄いページばかりが上がってきて、
ちょっと見つけられなかった。
0342デフォルトの名無しさん2016/04/13(水) 16:10:54.68ID:m2aMgexj
初歩的で申し訳ないですがスマホ用ページとPC用ページでURLを変えたくない場合
一つのPHPにスマホ用とPC用のコード両方書いてもブラウザで判別して分岐させたら
処理は重くならないですよね?
ファイル分けた方が軽いんでしょうか
0343デフォルトの名無しさん2016/04/13(水) 16:29:00.50ID:V9vZnwrf
重くなるってほど変わるような話じゃない
というか最近のトレンドは画面サイズで処理振り分ける方法
ようは全部スタイルシートでやる
0344デフォルトの名無しさん2016/04/13(水) 17:30:50.08ID:Qs0P8RGZ
諸先輩方に質問なのですが
特定の文字列の末尾に[]で囲まれた0以上の整数値(最大値は不明)が入っている事があります
文字列にこれが含まれているかを判定して[]まで含めて除去したいという場合どのような処理を用いればよいのでしょうか
0345デフォルトの名無しさん2016/04/13(水) 18:05:35.83ID:KCoW39g8
>>344
微妙に曖昧な点があるから、文字列の具体例と欲しい結果を書いてごらんよ
0346デフォルトの名無しさん2016/04/13(水) 18:50:02.39ID:SBj4pmRf
>>345
曖昧な点がどこにあるか教えてもらえないでしょうか
0347デフォルトの名無しさん2016/04/13(水) 18:53:10.23ID:fbVZAWIt
例を書けよ、オレもあいまいだから様子見してた
その探したい文字列は複数あるの?
全体は複数行なの?
0348デフォルトの名無しさん2016/04/13(水) 18:59:33.89ID:OSAV0HGg
preg_replace('/\[\d+\]$/', '', $s)
とかじゃないの
0349デフォルトの名無しさん2016/04/13(水) 19:04:16.19ID:pIZn+U3p
そうだと思うよ。
文字列のパターンによっては [ 以降を切り捨てるだけで解決する話かもしれない
0350デフォルトの名無しさん2016/04/13(水) 19:20:04.40ID:eHbmdEvw
整数値と明示されていると/\[[1-9][0-9]*\]$/としたくなるな
0351デフォルトの名無しさん2016/04/13(水) 19:20:44.70ID:pIZn+U3p
0以上の整数値だそうですよ
0352デフォルトの名無しさん2016/04/13(水) 19:21:34.17ID:eHbmdEvw
Oh
■ このスレッドは過去ログ倉庫に格納されています