WEB関連全般
mysqlからmysqliへ変える場合の置換(ただの正規表現について)
メモ。
mysql_queryやmysql_fetch_arrayは、PHP5.5で非推奨となり、PHP7.0では消滅するそうです。
5.5なら非推奨とはいえ使えるのですが、エラーが出るし、できれば変更しておきたい。
ということでDreamweaverなどで一括置換する場合は正規表現で置換しましょう。
mysql_fetch_arrayの場合
検索ワード:mysql_fetch_array\((.+?)\)
置換ワード:$1->fetch_array()
mysql_num_rowsの場合
検索ワード:mysql_num_rows\((.+?)\)
置換ワード:$1->num_rows()
総合管理者 | 2015年12月23日 | コメント(0) | トラックバック(0) | WEB関連全般
EC-CUBEテンプレート用タグ
メモ。
随時更新中・・・
パス用タグ
- <!--{$smarty.const.ROOT_URLPATH}-->
EC-CUBEで設定したウェブルートのURLパス。
ドメイン:無し
出力例:/ - <!--{$smarty.const.TOP_URL}-->
EC-CUBEで設定したトップページのURLパス。
ドメイン:あり
出力例:https://nandani.sakura.ne.jp/ - <!--{$smarty.const.CART_URL}-->
カートへのURLパス。
ドメイン:あり
出力例:https://nandani.sakura.ne.jp/cart/ - <!--{$smarty.const.P_DETAIL_URLPATH}-->
商品詳細ページへのベースURLパス。
ドメイン:無し
実際に商品ページへ行くには後ろに商品IDを付ける必要あり。
例:<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->
出力例:/products/detail.php?product_id=1 - <!--{$smarty.const.IMAGE_SAVE_URLPATH}-->
アップロードした画像のフォルダへのURLパス。
ドメイン:なし
出力例:/upload/save_image/ - <!--{$TPL_URLPATH}-->
テンプレートへのURLパス。
ドメイン:無し
出力例:/user_data/packages/default/
総合管理者 | 2015年12月17日 | コメント(0) | トラックバック(0) | CMS関連
商品ページの変数【EC-CUBE】
かなり雑にメモ。
EC-CUBEの商品ページ用のテンプレートで、商品情報が入っている「$arrProduct」の中身は、以下のキーで取得できます。
■product_id
■name
■maker_id
■status
■comment1
■comment2
■comment3
■comment4
■comment5
■comment6
■note
■main_list_comment
■main_list_image
■main_comment
■main_image
■main_large_image
■sub_title1
■sub_comment1
■sub_image1
■sub_large_image1
■sub_title2
■sub_comment2
■sub_image2
■sub_large_image2
■sub_title3
■sub_comment3
■sub_image3
■sub_large_image3
■sub_title4
■sub_comment4
■sub_image4
■sub_large_image4
■sub_title5
■sub_comment5
■sub_image5
■sub_large_image5
■sub_title6
■sub_comment6
■sub_image6
■sub_large_image6
■del_flg
■creator_id
■create_date
■update_date
■deliv_date_id
■plg_giftpaper_noshi
■product_code_min
■product_code_max
■price01_min
■price01_max
■price02_min
■price02_max
■stock_min
■stock_max
■stock_unlimited_min
■stock_unlimited_max
■point_rate
■deliv_fee
■maker_name
■price01_min_inctax
■price01_max_inctax
■price02_min_inctax
■price02_max_inctax
取得例:商品IDを取得する場合
<!--{$arrProduct.product_id}-->
総合管理者 | 2015年12月11日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連
Linuxでファイルの中に記述さている文字列を検索する方法
Linuxでファイルの中に記述されている文字列の検索方法です。(タイトルのまま)
まずはTeraTermなどで、サーバにSSH接続してください。
検索したいフォルダまで移動してください。
下記のコマンドを実行してください。
find ./ -type f -name "*.(拡張子)" -print | xargs grep '(検索ワード)'
- -name "*.(拡張子)":
特定の拡張子のファイルのみを対象としたい場合は、拡張子も入力してください。 - grep '(検索ワード)':
検索したい文字列を入力してください。
例:PHPファイルの中身にhogeが記述されているファイルを検索。
find ./ -type f -name "*.php" -print | xargs grep 'hoge'
参考サイト
総合管理者 | 2015年11月02日 | コメント(0) | トラックバック(0) | サーバー関連
WordPressの見落としがちな設定(ゴミ箱)
お客様から、記事が勝手に消えてしまったという連絡を受けました。
話をよく聞いてみると、とりあえず非公開にしたいからゴミ箱に移動させていたとのこと。
いや、そういう時はステータスを「下書き」にするか、公開状態を「非公開」にしてほしいのですが・・・
うっかり「完全に削除する」をクリックしてしまったのではないかと思ったのですが、よくよく調べてみると、Wordpressではゴミ箱に移動した記事は、30日経つと自動的に消えてしまうそうな。
これは知らなかった。
ちなみに、wp-config.phpに
define('EMPTY_TRASH_DAYS', 日数);
と追記することで、保存期間は設定できるらしい。
WordPressでゴミ箱から復元する方法と保存期間を変更する方法 | WordPress奮闘記
とりあえずゴミ箱には、消えても良い記事だけを入れましょう。
総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | CMS関連
リバースプロキシ超便利!(専用サーバに限る)
日進月歩のWEB業界。
次々に新しい技術が出てきて、めまぐるしい限りです。
どこまでついていけることやら。
しかしふと後ろを見てみると、結構取りこぼしている知識ありませんか?
ということで、最近知ったリバースプロキシについて。
このような事例があったとします。
とある会社で、サーバを移転し、ウェブサイトを一新することになりました。
しかし、その会社は多くの店舗をもっており、しかも店舗ごとにウェブサイトを持っています。
しかし、ドメインは1つで
- http://www.○○○○.co.jp
が本体のサイト。
各店舗のサイトが、
- http://www.○○○○.co.jp/□□□□
- http://www.○○○○.co.jp/△△△△
- http://www.○○○○.co.jp/××××
フォルダ構造になっているのでした。
さて、本体サイトの準備は出来たのですぐにでも公開したい!
しかし、他の店舗のサイトはまだ出来ておらず、しかも移行が難しいコンテンツもある。
「はやくしてくれ。」
「いやいや待ってください。そもそも移行自体が難しいコンテンツもあるんです。」
という問答の末、
「早く公開したいから、とりあえず、会社本体サイトだけでも新サーバで公開してくれんか?」
と来てしまいました。
さて、こんなときどうするか。
こんなときこそリバースプロキシですよ!(ただし移行先が専用サーバに限る。)
STEP.1
まず、元々のサーバ用に、サブドメインを取得し、割り当てておきます。
http://hoge.○○○○.co.jp/
STEP.2
新サーバのhttpd.confを開き、
<VirtualHost *:80>
ServerName www.○○○○.co.jp
~
</VirtualHost>
の中に、
ProxyPass 公開パス 転送先URL
ProxyPassReverse 公開パス 転送先URL
を追記します。
公開パスは、各店舗のフォルダです。
転送先URLは、サブドメインを割り当てた各店舗のURLです。
つまりこうなります。
ProxyPass /□□□□ http://hoge.○○○○.co.jp/□□□□
ProxyPassReverse /□□□□ http://hoge.○○○○.co.jp/□□□□ProxyPass /△△△△ http://hoge.○○○○.co.jp/△△△△
ProxyPassReverse /△△△△ http://hoge.○○○○.co.jp/△△△△ProxyPass /×××× http://hoge.○○○○.co.jp/××××
ProxyPassReverse /×××× http://hoge.○○○○.co.jp/××××
STEP.3
追記後はApacheを再起動して、DNSを切り替えます。(あらかじめhostsファイルを編集して、DNS切り替え後の状態を確認しておくと良いでしょう。)
これで、本体サイトは新サーバで稼動し、各店舗のサイトは旧サーバへ転送されます。
これがただの転送ならば、URLがサブドメインになってしまいますが、リバースプロキシならば、ドメインが「www.○○○○.co.jp」のまま、旧サーバのページを開きます。
う~ん、便利だ。
参考サイト
総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | サーバー関連
あぁ勘違い ー パーミッションについて
自分はこれまで、パーミッションについて
- 実行:4
- 書き込み:2
- 読み込み:1
だと思っていました。
だって、PHPは644(または604)で動くんだもの。
実行権限がついているのは当然でしょ、と思っていたわけです。
しかし実際は皆さんもご存知の通り
- 読み込み:4
- 書き込み:2
- 実行:1
と間逆!
ドヤ顔で説明していたところに、違いますと指摘されたものだからこれは恥ずかしい・・・
では、なぜPHPは644(または604)で動作するのか。
答えはこのブログに書かれていました。
PHPでパーミッション(実行権)の設定が必要ない理由 | ちほちゅう
なるほど、PHPはapacheモジュールで、apache内で実行されるから、apacheが読み込みさえできれば動作するということですね。
・・・でも待てよ。
PHPにはCGIモードなるものもあったはず。
PerlなどのCGIは755・705で動作するから、CGIモードだと755・705か?
いやしかし、運用している専用サーバのPHPはCGIモードにしていて、644で動いていたはず。
・・・そういえば。
と、専用サーバを設定する際に、suEXECという設定を行ったことを思い出しました。
[引用]
suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは 異なるユーザ ID で CGI プログラムや SSI プログラムを実行することができます。CGI プログラムまたは SSI プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。
なるほど、だからか。
所有者権限の実行でありながら、CGIプログラムを実行することが出来るわけですね。
だから所有者が読み込みさえできればよいと。
総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | PHP関連
PHPでアップロードできる上限は2GBまで!【POSTの場合】
<form action="hoge.php" enctype="multipart/form-data" method="POST"> <input name="hogefile" type="file" /> <input type="submit" value="送信" /> </form>
PHPを使用して、このような形式でファイルをアップロードする場合、アップロードされるファイルサイズの上限はphp.iniで設定されています。(正確には.htaccessやPHP自身でも設定できますが。)
php.iniには、アップロードファイルの上限を設定する箇所が3つあります。
- memory_limit(使用できるメモリの上限設定)
- post_max_size(POSTされるデータの上限設定)
- upload_max_filesize(アップロードされるファイルサイズの上限設定)
です。
それぞれ
memory_limit >= post_max_size >= upload_max_filesize
という関係になっています。
つまり、「upload_max_filesize」をいくら増やしても、「post_max_size」で設定されているサイズ以上のファイルはアップロードできないし、「post_max_size」を増やしても、「memory_limit」で設定されているサイズ以上のファイルはアップロードできないというわけです。
例:
memory_limit = "128MB"
post_max_size = "512MB"
upload_max_filesize = "1G"
この場合、アップロードできるファイルサイズの上限は128MBとなります。
memory_limit = "128MB"
post_max_size = "1G"
upload_max_filesize = "1G"
この場合でも同様。
もちろん、memory_limitは、サーバのメモリサイズ(仮想メモリ含む)の上限を超えることはできません。
つまり、
memory_limit = "2G"
post_max_size = "2G"
upload_max_filesize = "2G"
こう設定したとしても、実際のサーバのメモリ(+仮想メモリ)が1GB分しかなければ、1GBまでしかアップできないということになります。(他にもメモリ使ってるだろうから実際はもっと低い)
では、サーバのメモリを12GBくらい積んで
memory_limit = "4G"
post_max_size = "4G"
upload_max_filesize = "4G"
とした場合、4GBまでアップロードできるようになるか?
答えはNoです。
この原因は、apacheにあります。
apacheの設定に、「LimitRequestBody」というものがあり、これの上限は2GBとなっています。
「LimitRequestBody」はその名の通り、HTTPリクエストのボディ部分のサイズ限界です。
いくらPHP側の設定で、2GB以上を迎え入れる準備をしたところで、HTTPリクエストの方で限界を迎えるわけです。
まあ、2GB以上をアップすることは中々ないとは思いますが、大容量のファイル共有サイトなどを作ろうと思ったりした場合は、注意が必要ですね。(FTP接続の方式にすればうまくいくかも。)
参考サイト
総合管理者 | 2015年10月16日 | コメント(3) | トラックバック(1) | PHP関連
bloginfoが非推奨?【WordPress】
今更ながら、bloginfoで一部パラメータの使用が非推奨になっているのに教えてもらって気付きました。
ただ、全部がアウトというわけではなく、Codexを見る限り非推奨になっているパラメータは
- 'siteurl'
- 'home'
の2つ。
代わりは
- echo site_url()
- echo home_url()
です。(どちらも返り値があるタイプなので出力する場合は要echo)
ちなみに、非推奨になったのは2.2のときみたい(結構前だな)
非推奨とはいえ、一応現在(version4.2.4)でも使用できています。
こういう場合の対策として、基本的に関数はさらにラッピングしといて、functions.phpだけ修正すればOKみたいにしておくべきだろうか・・・
それも面倒だなぁ。
参照サイト
総合管理者 | 2015年08月18日 | コメント(0) | トラックバック(0) | CMS関連
ゾーン設定の更新でエラー
Doレジでゾーン設定の更新の更新を行おうとしたところ、下記のエラーが出てしまいました。
[filepath]:XX: file does not end with newline
zone XXXXX.XXX/IN: loaded serial 1508171633
OK
※XXは、設定によって変わります。
コピーしたものにドメインを追加し、Serialを変えただけなのに何でかな~と思ったら、案外簡単なところで引っかかってました。
最後の行は空行にしなくてはならないみたいです。
○正解
XXX IN A XXX.XXX.XXX.XXX
MAIL IN A XXX.XXX.XXX.XXX
(空行)
×間違い
XXX IN A XXX.XXX.XXX.XXX
MAIL IN A XXX.XXX.XXX.XXX(ここで終わっている)
総合管理者 | 2015年08月17日 | コメント(0) | トラックバック(0) | サーバー関連