Archive for the ‘php’ Category

このページの目次

Cactiを0.8.7gにアップデートしたのですが

火曜日, 2月 22nd, 2011

こんにちは、なかわけです。

仕事で使っているCactiを0.8.7fから0.8.7gにアップデートしました。
Tholdというメール通知のプラグインをインストールしようと思ったら0.8.7fのパッチとPlugin Architectureがなかったのでついでにアップデートもしてしまおうという流れで。インストール・アップデートの手順は以下のサイトを参考にしました。ありがとうございました。

ウノウラボ
Linux/CentOS5/cacti-0.8.7cから0.8.7dへ移行
サーバー監視システム構築(RRDtool+Cacti)

手順通りしたのですが、 (さらに…)

mkdir()したときのPermission deniedを回避

火曜日, 6月 8th, 2010

こんにちは、なかわけです。

自分的な作業メモです。
対象のディレクトリのパーミッションは合っているのに
mkdir()したときのPermission deniedのエラーが出ました。
いろいろいろいろ調べてやっと解決しましたが、何が原因だったのかわかりません。
ひょっとしたら私の認識が間違っているかもしれません(ただの勘違い?)。
詳しい人コメントください。

もともとのコードは以下のようなものでした
はじめにimagesディレクトリは存在していて、mkdir()でchocolateディレクトリを作るという設定です。
まず、Hogeクラスにmkdir()の処理が書いてあります。

class Hoge{
    public function __construct(){
        //コンストラクト的な処理
    }
    public function makeDir(){
        mkdir('images/chocolate', 0755, true);
    }
}

それで、Permission deniedのエラーが発生したときのコードFugaクラス

require_once 'Hoge.php'
class Fuga {
    public function __construct(){
        //コンストラクト的な処理
    }
    public function piyo(){
        $hoge = new Hoge();
        $hoge->makeDir();
    }
}

これだとPermission deniedのエラーがでてしまいましたが、
上記のFugaクラスを以下のように変更したら、エラーが無くなりました

require_once 'Hoge.php'
class Fuga {
    protected $hoge;
    public function __construct(){
        //コンストラクト的な処理
        $hoge = new Hoge();
    }
    public function piyo(){
        $this->hoge->makeDir();
    }
}

もともとimagesディレクトリの所有者はApacheだったんだけど、
メソッド内でHogeをnewするとmkdir()したときのディレクトリの所有者がApacheじゃなくなるのかなぁ
とか思ったんですが、じつは書き直す前のコードでもちゃんと動いている時期があって
phpのバージョンが上がったからなのかなんなのか・・・。
今度同じような問題にぶつかったときに詳しく調べようと思います。
ちょっと今日はもう時間がないので解決したというメモだけで・・・。

Services_Twitter0.5.0を使ってみてつまづいたところ

月曜日, 3月 1st, 2010

こんにちは、なかわけです。

PHPのPearライブラリ『Services_Twitter』を使ってみました。
基本的にとても簡単です。
が、0.4.0から使ってた人は仕様が変わったのでコードをちょこっと書き換えないといけません。
(さらに…)

Google Analyticsのモバイル版のga.phpにバグがあったので直した

金曜日, 2月 5th, 2010

こんにちは、なかわけです。

Google Analyticsのモバイル版が公開されたことを知って、
ちょうどモバイルの仕事をしていたので導入してみました。
が、動きませんでいた。
Analyticsの管理ページからコピペするコードと
ダウンロードするga.phpにバグがたくさん潜んでました。
隣のエンジニアに協力してもらって直しました。
(さらに…)

magic_quotes_gpcにハメられる

木曜日, 8月 27th, 2009

こんにちは、なかわけです。

FlashからPOSTしたデータをサーバに保存する仕組みを作ったときに保存されたデータになぜか\(バックスラッシュ)が入ってしまって悩んでました。

使用していたライブラリのせいなのかなーと思いながら(ちなみに先日のas3corelibです)、そのときはそれをやり過ごすようなプログラムを書いて対処しました。

後日、隣のエンジニアが閃いて教えてくれました。

サーバにはmagic_quotes_gpcという設定があるようで、これがONになっていると、”(クォート)を勝手にエスケープして\”にしちゃうそうです。

.htaccessに

php_flag “magic_quotes_gpc” 0

と書いて該当ディレクトリに置いて解決しました。

も~、知らんがな~。

PHPでPOSTしつつページを移動する

木曜日, 7月 2nd, 2009

こんにちは、なかわけです。

今日はPHPの話。また仕事中にした作業のメモです。

AページからBページ(別サイト)にPOSTしたいのだけど、

  1. Aページの文字コードはUTF-8で、BページにはShift-JISでPOSTしなければいけない。
  2. またAページの文字コードをUTF-8からShift-JISに変更することができない。
  3. さらにBページのウィンドウをJavascriptで開かないといけないという環境でした。

エンジニアに相談したらcURLを使ったら?とアドバイスをもらったんだけど、cURLはPOST先のhtmlを取得することはできるんだけど、ページ自体を遷移(移動)することができなかったので、ボツでした。

考えた挙句、1ページはさんでそのページではJavascriptで自動的にFormをBページへPOSTするようにしました。つまり、

Aページ → A’ページ →Bページ

という流れです。A’ページの文字コードはShift-JISです。

具体的にはこんな感じでした。本当はもっと複雑な処理してますが、わかりやすく簡単にまとめます。

Aページ(UTF-8)

<form action="A'ページ" method="post" target="aDashPage">
    <input type="input" name="chocolate" value="ビターが好き" />
    <input type="submit" value="A'ページへ" onclick="window.open('', 'aDashPage')" />
</form>

送信ボタンのJavascriptではウィンドウ名を「aDashPage」とurlを指定しないで空白のページを開きます。そして、そのウィンドウに対してFormをPOSTするようにします。

A’ページ(Shift-JIS)

<script type="text/javascript">
    window.onload = function(){
        document.postForm.submit();
    }
</script>

<form action="Bページ" method="POST" name="postForm">
    <input type="hidden" name="chocolate" value="<?=mb_convert_encoding($_POST&#91;'chocolate'&#93;, 'SJIS', 'UTF-8')?>" />
</form>

A’ページではメンドクサイですけど、もう一度フォームを作っていますが、type=”hidden”にして表示しないようにしています。また、window.onloadでページの読み込みが完了したらFormをPOSTするようになっていますので、環境によりますが1秒くらいでBページに自動POSTされBページが表示されます。

PHPの言語仕様としてPOSTしてリダイレクトすることはできないようですね。なんかいろいろ問題あるみたい。調べてた記事がどこいったかわからなくなっちゃった・・・。

PHPからJSONを作成してAjaxでRequest

金曜日, 2月 29th, 2008

こんにちは、なかわけです。

きょうは、仕事でAjaxをがんばってみました。
やってみたことは以下の内容です。

1.AjaxでPHPにアクセス
2.PHPは配列のデータをJSON形式に出力
3.戻ってきたJSON形式のデータをJavascriptのeval()で扱える形式に変換
4.innerHTMLなどでHTMLを更新

そもそもなかわけがAjaxなんか書けるわけがなく、
以下のサイトを参考にさせてもらいました。
【PHP TIPS】 20. PHPからJSON作成を扱う

JSONなんて表記法も初めて知りましたし、勉強になった。
Ajaxておもしれ。