忍者ブログ

カウンター

プロモーション

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


No Image

Apache のhttpd.conf のデフォルト基点はSRVROOTで作られている

PHP の調べ物

Windows (Linux も多分、同様な気がする)のApache のconf ファイルのデフォルト基点は
SRVROOTで作られているので
DocumentRoot の位置を一部変更すると、他(のファイル)も変更しなければ
ならなくなるという至って当たり前そうだけど、ハマる可能性がある話しだと思って
私的にメモ

理由は、
DocumentRoot を1箇所、例えばc:\htdocs
など、Apache がインストールされれいるファイル位置から変更するとする。

これは、普通に考えて、httpd.conf の中のDocumentRoot を
変えれば終わる・・・気がする・・・

しかし、これ一箇所だけ変えて、Apache のインストールされているディレクトリ直下の
hddocs を消す(もしくは、前途のc:\htdocs にそのまま移動したりする)と、
AH00112: Warning: DocumentRoot [C:/~~Apache のインストールディレクトリ~/htdocs] does not exist
と起動時にエラーがでる。

実は、httpd.conf の中で、DocumentRoot はinclude されている
Include conf/extra/httpd-ahssl.conf
など、この中でもssl 用などで、DocumentRoot はSRVROOT が使われていて
  DocumentRoot "${SRVROOT}/htdocs"
なんて書き方で記述され、コメントアウトもされていないので
これらのファイルをそのまま雛形として使っていると、
httpd -k install -n "付けたいApache のサービス名" -D phpのIfDefine名での
インストール作業(Windows)や毎回起動時にエラーが出てしまう。

Apache の最大の難関は、設定、でも設定が終わればそれまでなんだけど、
一度悩むと長い間、時間をかけて考えたり結構労力がいるので
一応個人的なメモを何時もの様にしてみた。

お粗末でした<_ _>


拍手[0回]

PR

No Image

なんじゃこりゃぁ!(^Д^;)`hostname`と'hostname'の違いwww(バッククオォート はPHP で!)

PHP の調べ物

PHPってたまに知らない記述があるんです・・・・・

それは知ってたんですが
Get the IP address (192.168.X.X, assigned by the wireless router) in my webpage?
この記事見て思った・・・


$myIP = gethostbyname(trim(`hostname`));
この
`hostname`って記述 Shit+7 キーの「'」じゃない・・・
これ、MySQL の記述、クォートにも使うShift+@キーの「`」
なんなんだ?

そう思ってやってみた・・・・

echo `hostname`;  //①
echo 'hostname';  //②

違うがな^v^;
①だと、自分のPCの名前になる!
②だと、そのまま「hostname」って表示される・・・・

どんだけぇ~~~w

PHPマニュアル調べても何処にこんな機能が書いてあるのか不明w

気になったので色々やってみた!
echo `dir`;

え!www 酷いw 酷すぎるぅーーーーー!

echo `path`;
ええええええw

色々ショッキングなんですが、絶句ですw


とりあえず、他浮かばなかったので
google で検索しようとすると ` は " と同じ扱いされてるのか
検索できないwwwwwwwwwwwwwwwwwwwwwww

これは困ったw

"'" とかで括っても検索うまくできません。

色々驚いた記述なのでブログ載せてみましたorz


2019/05/21 追伸
色々、調べてて分かった・・・
バッククオォート で囲むと、なんと!
シェルコマンドを実行するのだ!!!!!!!!!!!!!!!!!!!!!!!!!!!!

やっと、やっとわかった。。。。

実行演算子https://www.php.net/manual/ja/language.operators.execution.php

 バッククォート演算子の使用は shell_exec() と等価です。
と公式にありました!

理解がどれだけ立ってだろうか、4年経ってから、やっと分かったという。
( ..)φメモメモしておいてよかった。

めでたし、めでたし。

拍手[0回]


No Image

スクレイピングのGoutte インストール(Composer)とPhar アーカイブ化(box2-lib)

PHP の調べ物

PHP で、どの程度か分からないけど、
ブラウザで閲覧した時と同様なCSS構造をしっかり表現してくれるらしい
それがGoutte らしい。

HTMLのソースに、CSS を適応してくれる解釈が出来るのか?!

とりあえず、本当はJavaScirpt まで解釈して動的な数値やら読み込みやら、
置換されたパス、他に動的に付け加えられる内容(例えばスクロールすると読み込む何かとか)
それらまで実は表現して欲しいけど、どうもそれはPhantomJS とか
JavaScript の解釈用の何かを入れた方が早い(のかな)?
どこまでやってくれるのか、全くわからないけど、メモ(このブログ)を
残しながらやってみようと思う。

とりあえず、色々、色々考えまくっているが、
調べながら分かった事のメモを残す(毎度長い前置きorz)


さて、その今回の対象物Goutte
公開してるのは
https://packagist.org/packages/fabpot/goutte
こっちは、どうも公開方法に拘っている?っぽい?
https://github.com/FriendsOfPHP/Goutte
つまり、Composer を使う事を前提にしてるっぽい。

説明関係
http://wiki.nonip.info/index.php/Php/Goutte
http://ss-complex.com/2014/05/php_blog/
http://d.hatena.ne.jp/hnw/20120115
http://matomater.com/18784/
http://blog.asial.co.jp/1316
http://chiplus.net/2014/11/06/post-1300/

じゃこれは何だ?と今一度問うて
http://matome.naver.jp/odai/2139123528062735701/2139143210772374803
ほほう?fabpot/Goutte????
よくわかんないけど、fabpot とは公開してる人の名前だったw
https://github.com/FriendsOfPHP/Goutte
なーるほど@@;

でこっちはGitHub での公開
https://github.com/FriendsOfPHP/Goutte
ふむふむ

これはどう使えと??っと考えてみてると
とあるサイトには.phar 拡張子をphp で読み込めば
PHP に内部実装してあるPhar が動くからOKって記事がちらほら
Phar は
http://qiita.com/rana_kualu/items/4b2ef7bfff83939d7ef5
http://sasezaki.hatenablog.com/entry/2012/02/09/002416

でもでも・・・・実は私がGitHub を見たときには
removed phar support の文字が・・・
つまりPhar圧縮しての公開はしないっぽいです。
http://dondoko.hateblo.jp/entry/2014/09/06/113027
ここでも
「goutteはいろんなコンポーネントを使用して構成されているらしく、
最新のgoutte.pharはそれらがまとまっていたのだが。
goutte1.0.6にはgoutte単体しかなく、そのかわりcomposer.jsonが置いてあった。」
とある。


圧縮してあると、中身のバージョンアップ、面倒なのかな?とか、
中身にウイルスとか入ると困るからかな?とか、いっぱいなんか
考えられるし、そういう系統(Pharの問題)のブログもネット検索で
あった。

Composer の問題
http://co3k.org/blog/composer-replace-security-bug-has-been-fixed
http://dqn.sakusakutto.jp/2014/07/php_composer_require-dev.html
なんか読めば、
「まずはお使いのすべての Composer を self-update サブコマンドで更新しましょう。」
らしい。
それをすればOKとかなんだろうか?

自分でPharアーカイブ作るのはまだ対策後ならいいけど、
むしろそれだけでなくてPhar のファイルをダウンロードをむやみにするな!って
事なんじゃないだろうかと。

で、話は変わってComposer は、Linux のパッケージ管理みたいに、
指定のパッケージをダウンロードして、ファイルとフォルダの構成を
ある型に従ってしてくれるっぽい(今頃説明かっ!)。

説明によるとPHP の依存管理ツールらしい
http://9ensan.com/blog/programming/php/php-composer-cli/

Composer の使い方としてこっちもあった(勝手に日本語)
https://kohkimakimoto.github.io/getcomposer.org_doc_jp/doc/01-basic-usage.html
本家
https://getcomposer.org/download/
Composer の公開は、
安定版 => dist => –prefer-dist オプション
開発最新版 => source => –prefer-source オプション
らしい。

他にもなんかいっぱい
http://laravel.hatenablog.com/entry/2013/11/18/004325
http://www.ryuzee.com/contents/blog/5681
その他のその他
http://qiita.com/notona/items/c5a087d8dd446d315e6e
http://qiita.com/masarufuruya/items/23131a465b7e9c8f3060


Windows Installer っていうWindows 用があったので
https://getcomposer.org/download/
にComposer-Setup.exe 
というのがあったので、これを落としてインストールしたら、
PHPのphp.exe のパスを尋ねられる部分で自動でphp.exe のパスが
私の場合は入っていた。

Windows のウィンドウ説明付きはこっちにあった
http://qiita.com/mikoski01/items/266469535e860312145d

これでインストールすると、私の場合path が、環境変数に
「C:\ProgramData\ComposerSetup\bin」
と追加された。
インストーラーの実態は、
「C:\Program Files (x86)\ComposerSetup」
だった、右クリックでJSON を選択した時に、Windows ならば
インストールできるという機能もつくけど、JSONだと、どんなJSONでも
表示されちゃうから、嫌な人はインストーラー使わない方でもいいかも。

後、PHP のパスを聞いてきているので、PHP を通す設定を
私の場合は手動でpath に書いているけど、「C:\PHP-x.x.x」とか
これらもしているから、再起動後、簡単に動いたのかもしれない。

どうであっても、実態は、php.exe で、composer.phar に引数、
例えばinstall をつけて実行しているに過ぎないのが分かる。

installディレクトリには、composer.bat があって、中身に1行
「@ECHO OFF php "%~dp0composer.phar" %*」とあるだけ。
同じディレクトリにcomposer.phar が存在する。

本当に面倒だと思うならば、PHPのpath 通ってる様になら、
php のフォルダに入れちゃってもいいんじゃないかなと。

ここででは、戻って本題のGoutte をダウンロードしてみた。
https://github.com/FriendsOfPHP/Goutte
にある
https://github.com/FriendsOfPHP/Goutte/archive/master.zip
これをダウンロードして展開すると
諸々のファイルと、必要なライブラリダウンロード構築用の
composer.json
が見つかる。

私の場合はWindwos に右クリックの機能を入れちゃったので
そこからinstallを選んで終ってしまった。
手動でも composer install
と、composer.json が展開されたフォルダに移動して
打ち込めば、composer のパスが通ればそれで終る。

さっき言った面倒だから!って人は、php.exe がある場所に
composer.phar を置いて、php.exe のある場所のpath だけを
通しておいて、php.exe composer.phar install とかでいいんじゃないかな?

それでこれが結果


 
Command: composer install
 
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing symfony/dom-crawler (v2.7.1)
    Downloading: 100%
 
  - Installing symfony/browser-kit (v2.7.1)
    Downloading: 100%
 
  - Installing symfony/css-selector (v2.7.1)
    Downloading: 100%
 
  - Installing guzzlehttp/promises (1.0.1)
    Downloading: 100%
 
  - Installing psr/http-message (1.0)
    Downloading: 100%
 
  - Installing guzzlehttp/psr7 (1.1.0)
    Downloading: 100%
 
  - Installing guzzlehttp/guzzle (6.0.2)
    Downloading: 100%
 
symfony/browser-kit suggests installing symfony/process ()
Writing lock file
Generating autoload files
 
C:\Apachex.x.x\htdocs\goutte_composer_project\Goutte-master>
(私の場合のパスです)

これでめでたし! と思ったら、
なんかPhar になってない事に気がついて
気になって仕方ない・・・・

確かにPhar でなくても動くけど気になる。

うーん・・・と思って気がついたのは、
同じCoutte のディレクトリに「composer.json」とは違う名前で
box.json」っていうのが存在する・・・

これを色々調べてみると、これがPhar アーカイブを作るためのJSONらしい。
http://qiita.com/morishitter/items/d6401176d99953cce4da
http://qiita.com/iwai/items/2c65273a6640c7b3fec2
本家
http://box-project.org/
GitHub
https://github.com/box-project/box2-lib
これ、言い方がよくわからない
たとえるならば、
BOX が本名で、型式がbox2-lib でアドレスなどではbox2 と略して使われる。
型式の方が一般的に通用する名称?みたいなたとえ話で、人には通じるのだろうか?w

まぁ、とりあえずボックスさんが必要です^x^;

それの中身は普通にPHP でした。
https://box-project.github.io/box2/installer.php
コピペでもいいかもしれない・・・
でも、
公式には
$ curl -LSs https://box-project.github.io/box2/installer.php | php
って書いてあるね・・・

でこれ、実は多分、Windowsインストーラーないですからw

もう、Windows にインストーラーで入れちゃって
Composer と一緒でいいなら
「C:\ProgramData\ComposerSetup\bin」
に入れておけば、パス通るしw
気になるなら別にフォルダ作って、環境変数のPath 作ればいいんだろうな?って感じでした。

必要なコンポーネント集めるには公式みてると
$ composer global require 'kherge/box=~2.4' --prefer-source
Composer が必要みたい!

それでビルドは
$ box build -v
とかでいいのかも。

これ、メモなので、BOX辺りから、自分で試してないので、
間違ってたら、後日でも修正します!(多分)


他、リンク
Goutte内部で使われるSymfony2の~~~
http://blog.asial.co.jp/iphone/756
Composer の
http://codezine.jp/article/detail/7827

「Goutte」と「phpQuery」を比較
http://qiita.com/ka215/items/79c30e9c15ae0462f457

これも「Goutte」と「phpQuery」比較
http://ka2.org/compared-to-goutte-and-phpquery-of-scraping-library-for-php/

Goutte vs. Simple HTML DOM Parser
http://qiita.com/soarcreator/items/56a971d42b8b640b76a6

PHP コードをコーディング規約に沿うよう修正してくれるツール 「PHP CS Fixer」
これもComposer でパッケージ管理されていて取得できるっぽい
http://fivestar.hatenablog.com/entry/2014/12/08/033345
https://github.com/FriendsOfPHP/PHP-CS-Fixer

テストの作成をしてテストできるみたい
http://fuelphp.caph.jp/articles/tag/goutte/

Symfony2の機能テストと基本的に同じ
http://qiita.com/77web@github/items/3cd3b56985d5c6845661

Goutteでコントローラーテスト
http://kinjouj.github.io/2012/12/fuelphp-24-goutte-controller-testing.html

似て非なる何か、でも参考「Behat」
http://blog.moccori.com/d/2013-05-27

DomCrawlerコンポーネント(symfony2)
http://docs.symfony.gr.jp/symfony2/components/dom_crawler.html

質問関係
http://q.hatena.ne.jp/1408766188
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12134822307
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13142533538
http://ja.stackoverflow.com/questions/6485/goutte%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0

この人はGoutte使おうと思ったらイケてなかったらしい
http://qiita.com/peka2/items/108da70e2df9be75ac49

これ本格的
別々のGoutte\ClientにCookie情報を引き継いで渡したい
http://skgckj.hateblo.jp/entry/2015/02/04/091724

Goutteを使って
http://kkkw.hatenablog.jp/entry/php/scrape-with-goutte

英語だけど
http://incarnated.net/blog/scrape-web-goutte

How to simulate javascript support?(英語だけど質問)
https://github.com/FriendsOfPHP/Goutte/issues/175

How to use Goutte(英語だけど質問)
http://stackoverflow.com/questions/15628926/how-to-use-goutte

ではメモでした<_ _>

拍手[0回]


No Image

PHPでOS判定時に用いるディレクトリの指定セパレータはWindows で大凡常に「\」 でなく「/」(__FILE__は例外orz)

PHP の調べ物

正規表現で、ファイルのパスを置換していて気が付いたφ(..)メモメモ

なんだかWindows でもディレクトリを示すセパレートする文字が
「\」じゃなく「/」なんじゃないかな?なんて思えてきた

なぜかDIRECTORY_SEPARATOR っていう定数が使えない

var_dump($_SERVER);
をしてみる。

この中でWindows のパスを睨めっこ

あれ?
Windows の環境変数 PATH だけ
 'PATH'' => string 'C:\~~~
となっていて

スクリプトの名前は
 'SCRIPT_FILENAME' => string 'C:/~~~
となっている
という事は、PHP上は全て 「/」で扱えば良いのか?!(追伸を見て・・・w)

正規表現などで思わずDIRECTORY_SEPARATOR という定数を
使うと、Windows はDIRECTORY_SEPARATOR  が「\」でヒットしない場面がパスだと多い!
うーん、なんだかなぁ^^;
という事で、PHP上でパスを使う場合には、大凡「/」で良いみたいだ
せっかくDIRECTORY_SEPARATOR  を見つけて厳密性を!と思ったけど 厳密にPHP でのパス取得は「/」だったというおちでしたorz
なんか正規表現がうまく動いていない原因が分かってホッっとしましたとさ@x@
φ(..)メモメモでした
---------------
追伸です!!!
echo __file__;
をWindows ですると
C:\~~~ なんですorz

なんでこれだけ「/」 じゃなく「\」 なのか・・・

系統が違ってもディレクトリのパーサー記号は統一してほしいものです・・・・
と言うか選択できるのかな?
多分今のところ?出来ないかな・・・・
うーーーーん・・・・

Windows のコマンドラインで直接使うのならば「\」がいいし、
PHPだけなら「/」がいい 出来れば選択式にして欲しい・・・・w

拍手[0回]


No Image

PHPで関数名を引数にとる関数 って簡単に作れるじゃんって話^w^;

PHP の調べ物

なんだか関数に引数を取るPHPの関数はコールバック関数として
いくつか存在しています。

それらの関数を使わないと、
例えば関数magicFunc()の引数に関数の名前runFuncを入れて、
magicFunc('runFunc')として
その関数の中で
runFunc を実行できないのか?と考えました。

これ、すんなり出来るんです^w^;

なんじゃそりゃ!?wwwと思ったのでφ(..)メモメモしました(PHP5.3.5くらいですw)。

function runFunc($valArray){
    
var_dump($valArray);
}

function 
magicFunc($funcName,$valArray){
    
$funcName($valArray);
}

magicFunc('runFunc',array('て','す','と'));


これをすると

array
  0 => 
string
 'て' (length=3)
  1 => 
string
 'す' (length=3)
  2 => 
string
 'と' (length=3)
なった@w@;

つまり、引数で渡した変数と化した関数名が入った値を、
そのまま()を付けて関数っぽく使うと、
それがそのまま関数になるのですね!!!

おぉ!えくせれんと(謎

という事で、もしも引数の数なども判断した関数を作りたければ
PHP5.6 からはunctions.variable-arg-listにある
可変長引数リストが非常に便利ですがそれ以前(5.5)な場合は
func_num_args()func_get_arg()func_get_args() 
を使えば何でも作れそうです。

後、引数名が入った引数も$を一つ多く書いて$$で名前の変数を参照できるので
$sole='heart is power';
$body='sole'

としておいて
var_dump($$body);


string
 'heart is power' (length=14)
と参照できるので、もっと出来る事は広がりますd^v^b

面白そうなφ(..)メモメモでしたぁ~

お粗末<_ _>

拍手[0回]


[PR]