cakePHPのModelで別のModelデータを参照
cakePHP1.3。モデル内で別のモデルを参照する必要があった。
関連するデータは通常はアソシエーションを設定するけど、
アソシエーション関係なく呼ぶ必要もあるのでその時。
$User = ClassRegistry::init('User'); $users = $User->find('all');
など。
cakePHP1.3。モデル内で別のモデルを参照する必要があった。
関連するデータは通常はアソシエーションを設定するけど、
アソシエーション関係なく呼ぶ必要もあるのでその時。
$User = ClassRegistry::init('User'); $users = $User->find('all');
など。
localhostでfacebookのPHPSDKを試していると下記のエラーで動かず。
Uncaught CurlException: 28: SSL connection timeout thrown
PHPSDKの中にあるbase_facebook.phpに1行追加したら動いた。
$opts[CURLOPT_SSLVERSION] = 3;//この行を追加 curl_setopt_array($ch, $opts);
findで取得するデータに表示用のテキストなど付けたい場合はModelでafterFind。
public $options = array( 'flag' => array( 1 => 'カテゴリA', 2 => 'カテゴリB', ), ); public function afterFind($results) { foreach ($results as $key => $val) { if (isset($results[$key]['User']) && is_array($results[$key]['User'])) { $val = $results[$key]['User']['flag']; $results[$key]['User']['flag'] = array(); $results[$key]['User']['flag']['val'] = $val; $results[$key]['User']['flag']['str'] = $this->options['flag'][$val]; } } return $results; }
普段はmacportsでインストールしたapacheを動かしているが、たまになぜかデフォルトのapacheが起動してしまい、設定をしていない状態なので
It Works!
とだけ表示されてしまう。
原因はよくわからないが、terminal で apachectl stop としてデフォルトのapacheを終了すると、macportsのapacheになる。
coreserverにwordpressをインストールしたら、管理画面は普通に表示されるのに表の画面が真っ白になり何も表示されない状態になった。
結果、管理画面からwordpressを最新のものに更新すると解決。
cakePHP1.2で作った古いシステムを1.3対応させているときにエラーが発生。
Unsupported operand types in /Users/username/xxxxxx/cakePHP1.3.8/cake/libs/view/helpers/html.php on line 337
調べた結果、viewでcssの設定をしていた下記のような箇所が原因
echo $html->css(‘documents’, null, null, false);
解決方法としてはcontrollerでHtmlヘルパーを付け、css指定は下記のようにする。
echo $html->css(‘documents’);
日本語が頭についているファイルを添付すると、文字そのものが消えてしまう。元のスクリプトを解析してたらようやく原因発見。basename()という関数でパスからファイル名を取得しているんだけど、それがPHP5ではバグにより日本語が上手くでないとか。PHP6では直す予定らしい。
class.phpmailer.php
#1349あたりを
//$filename = basename($path);
$filename = end(split(‘/’,$path));
として完了。原因を探すまでが大変だった。
cd [ディレクトリパス]; [PHPパス] -f [実行ファイル] -c [php.iniのパス]
例
cd /home/example/example.com/public_html/; /usr/bin/php5 -f ./cron.php -c /home/example/php.ini
サーバー移転のためデータをごっそりと移動させようとして失敗。データの出力はphpMyAdminのエクスポートでできるが、インポートをしようとすると大きすぎるとエラーが出てできない。
設定ファイルをいじれる場合はconfig.inc.phpの中の$cfg['UploadDir']=”;を$cfg['UploadDir']=’./upload’;などとして、サーバーにディレクトリを作りSQLファイルをアップロードすればphpMyAdminのインポート画面で選択できるようになるのでインポート可能。
ただ、レンタルサーバーで設定がいじれないケースだったので調べてみた。
BigDumpというスクリプトを発見。結果これでできた。
ダウンロードするとPHPファイルがひとつ入っているのでそれを開き、DBの設定だけしてインポート先のサーバーにアップロード。同じディレクトリに大きすぎて困ってたSQLファイルをアップロードし、ブラウザからアクセスすると実行できる。
コツとしてphpMyAdminでのエクスポート時に設定をデフォルトから変える必要があった。エクスポートの画面で「生成するクエリの最大長」が50000になっているのを100にしてSQLファイルを作る。
参考にさせてもらったページ
WikiCookRecipe日記: MySQLインポートファイルがでかすぎる時には BigDump を使ってみよう!
運営していたWordpressサイトのひとつが、アクセスしてもタイムアウトとなり何も表示されない現象となった。
同じサーバーの他Wordpressサイトは表示されるのでサーバーが原因でもなく、テキストファイルなどを直接URL入力されると表示されるのでDNSなどが原因でもない。
しばらくアップグレードも変更もしていないので原因不明だったが、phpMyAdminで「テーブルの最適化」をしたら復旧。なぜこうなったのかは不明。