カテゴリー別アーカイブ: ロリポップ

ロリポップ!(チカッパ)でcron+ssh+rsyncにハマった。

ssh経由でログインして実行すればうまくいくシェルスクリプトがcronでは動かない。
エラーメッセージは、「/usr/bin/rsync: Permission denied」
スクリプトの内容は、あるディレクトリ以下のファイルを別サーバに同期(バックアップ)。

以下のようなスクリプト
——————————
#!/bin/sh

/usr/bin/rsync -a –delete ~/test_dir/ example.com:~/test_dir
——————————

24時間ほどハマり、なんとか解決。
/usr/bin/rsyncを~/web/以下にコピーし、それを使う。
——————————
cp /usr/bin/rsync ~/web/bin/
——————————

修正後のシェルスクリプト
——————————
#!/bin/sh

~/web/bin/rsync -a –delete ~/test_dir/ example.com:~/test_dir
——————————

これでOK。

ちなみに、SSHの秘密鍵のパーミッションは600にすること。
開けすぎてもエラーになる。注意。

[WordPress] テーマ編集画面で403(FORBIDDEN)

WordPressのテーマ編集画面でちょこちょこっといじって「ファイルを更新」ボタンを押すと403エラー(FORBIDDEN)。アク禁です。

えーーーーー!!

調べてみると使っているレンタルサーバーの問題でした(ロリポップ!)。

最近ロリポップ!に搭載された「WAF(ウェブアプリケーションファイアウォール)」機能!
不正アクセスによるサイトの改ざんや情報漏洩を防ぐ機能だそうです。 ロリポップ!では全プランでWAFを標準装備。

以前からあるドメイン(サブドメイン)では設定が無効になっているのですが、新規でサブドメインを作成するとWAFがデフォルトで有効になっているようです。これが問題だったか・・・。

設定場所は、
管理画面>WEBツール>WAF設定
です。
ドメイン(サブドメイン)毎に有効・無効の設定が可能です。

設定を「無効」にして・・・テーマ編集を試すと・・・

ええええ!まだエラー(403)出る!

なんでやねん!

あ・・・

「 設定変更後、反映に5~10分ほど時間を要します。」

焦った^^;

その後、無事エラーが出なくなる。

サイトの構築・修正がひと通り終わったらWAFを有効にしておけばいいのかな。

[ロリポップ!] PHPがブラウザでは動くが、cronでは動かない(ハマリ度約3時間)

3時間くらいハマリましたね。(見栄張ってるんで実際は5時間くらいハマってたと思います)

phpで書いたデータをDBに突っ込むプログラムが、

ブラウザでは実行できるんだけど、cronでは動かない。(実際にはプログラムは実行されてたんだけど、DBには突っ込まれていなかった、って感じ)

今回のハマりポイントは2つあります。

1つ目は、ロリポップ!のPHP設定でphp5.3を使用する設定していたんだけど、cronの場合はこの設定が反映されるわけではない。cronでphp5.3を使うにはパスを書く必要があった。プログラムの1行目に以下のように。(ロリポップ!cronの設定

#/usr/local/php5.3/bin/php

2つ目のポイントは、プログラムの中にphp5.3以降で有効になった記述方法を使っていたということ。この内容はコレです↓

$oppai = (get_oppai() ?: 0);

「三項演算子」というやつです。この、?と:の間を省略する形はphp5.3からできるようになった文法だったのです。そりゃオッパイゲットできなかったわけです。

なんでこのことに気づいたか。

それは、PHPのオンラインマニュアルで流し読みしていた時に瞬間視記憶としてある文章が頭に残っていたからです。その文章とは

「・・・・・・PHP 5.3 以降・・・・三項演算子のま・・・かの部分をな・・・・・・ともできる・・・・になりました。 ・・・・・・・・・・・・・」

これやーーーーーーって感じでした。

これ、たまたま気づけたけど、実際はもっとハマリ度高めだと思いますね。