WordPressのSyntax Highlightプラグインは何個かあるのですが、オススメはこちら。
Syntax Highlighter for WordPress
他のプラグインと違いHTMLエンティティ化(<→<等)してくれるので、HTMLもそのまま貼り付けることができます。
はてな記法でいうところのスーパーpreですね。
注意点として、htmlentitiesの第4引数を指定してあるので、PHP5.2.3以降でないと利用できません。
RedmineをPassengerで動作させたところ、リポジトリブラウザで特定のファイルが404エラーになるようになりました。
script '/var/www/redmine/public/repositories/changes/project/***.php' not found or unable to stat
phpファイルと処理しようとして実際存在しないのでエラーとなっていたので、phpモジュールを動作しないように設定しました。
/etc/httpd/conf.d/vhosts-project.cheki.net.conf
<VirtualHost *:80>
ServerName project.cheki.net
DocumentRoot /var/www/redmine/public
ErrorLog logs/project.cheki.net-error_log
CustomLog logs/project.cheki.net-access_log combined
<Directory /var/www/redmine/public>
php_flag engine off
</Directory>
</VirtualHost>
たんにLocationするだけなので、レスポンスヘッダから取得できる。
$ php -r 'echo http_head("http://tinyurl.com/9utxby");'
HTTP/1.1 301 Moved Permanently
X-Powered-By: PHP/5.2.8
Location: http://sankei.jp.msn.com/life/trend/080613/trd0806131533009-n1.htm
Content-type: text/html
Date: Wed, 07 Jan 2009 16:31:12 GMT
Server: TinyURL/1.6
PHP
<?php
$request = new HttpRequest();
$request->setUrl('http://tinyurl.com/9utxby');
$request->setMethod(HttpRequest::METH_HEAD);
$response = $request->send();
$header = $request->getResponseHeader();
var_dump($header['Location']);
先日のAM3:00以降のデータを取得する。
PHP
<?php
$request = new HttpRequest();
$request->setUrl('http://twitter.com/statuses/user_timeline.json');
$request->enableCookies();
$request->setOptions(array(
'timeout' => 3,
'httpauth' => 'user:passwd',
'httpauthtype' => HTTP_AUTH_BASIC,
'redirect' => 1,
'unrestrictedauth' => true,
'referer' => '',
'useragent' => 'wp_twitter API/1.0',
'compress' => true,
'encodecookies' => true,
'lastmodified' => mktime(0, 0, 3) - 60*60*24,
));
$request->setContentType('application/x-www-form-urlencoded');
$request->setMethod(HttpRequest::METH_GET);
$response = $request->send();
$json = $request->getResponseBody();
var_dump(json_decode($json));
via pecl_httpでtwitter
via Twitter API 仕様書 (勝手に日本語訳シリーズ)
http_getがなかなかエロイpeclのpecl_httpをインストールする。
fedora10のrpmパッケージがyumで見つからなかったので、peclコマンドにてインストール。
peclコマンドを含めいろいろ足りなかったのでyumる。
$sudo yum install zlib-devel
$sudo yum install libcurl-devel
$sudo yum install php-devel
peclコマンドでインストール
sudo pecl install pecl_http
/etc/php.iniに追記する。
extension=http.so
sfGuard extended class in lib/model/sfGuardPlugin/
and then add this in my sfGuardUserPeer class
how to override sfGuardUser? – symfony developers | Google グループ
正確にはオーバーライドしていませんが。
lib/model/ではなくlib/model/sfGuardPlugin以下に配置する。
sfGuardPlugin依存のユーザー登録画面プラグイン
http://www.symfony-project.org/plugins/sfApplyPlugin
できること
- apply
- ユーザー登録画面、ユーザー名、パスワード、メールアドレス入力
- 登録完了画面のURLを送信する
- comfirm
- 登録完了画面、ユーザーが利用可能となる
- ログイン状態になる
- reset-request
- ユーザー名を入力することにより登録しているメールアドレスにパスワード変更画面のURLを送信する
- reset
- 新しいパスワードを入力することによりパスワードが変更される
- ログイン状態になる
- settings
- フルネームの変更(ユーザーID、メールアドレスは変更できない)
- パスワード変更は上記のreset-requestを利用
利用するには?
前準備
sfGuardPluginをインストールし動作するように設定しておく
インストール
./symfony plugin-install http://plugins.symfony-project.org/sfApplyPlugin
設定
- データベースを作成するため「config/scheme.yml」に以下を追加
- ルーティングの設定のため「apps/{app}/config/routing.yml」に以下を追加
- sfGuardPluginの”forgot your password?”のリンクを/reset-requestにします
apply:
url: /apply
param: { module: sfApply, action: apply }
reset:
url: /reset
param: { module: sfApply, action: reset }
resetRequest:
url: /reset-request
param: { module: sfApply, action: resetRequest }
validate:
url: /confirm/:validate
param: { module: sfApply, action: confirm }
settings:
url: /settings
param: { module: sfApply, action: settings }
# We implement the missing sf_guard_password feature from sfGuardPlugin
sf_guard_password:
url: /reset-request
param: { module: sfApply, action: resetRequest }
メール内容を修正するには?
actionを修正するには?
sfApplyActionsを作成する
apps/{app}/modules/sfGuardAuth?/actions/actions.class.php
<?php
require_once sfConfig::get('sf_plugins_dir') . '/sfApplyPlugin/modules/sfApply/lib/BasesfApplyActions.class.php';
class sfApplyActions extends BasesfApplyActions
{
}
redmineを導入するではpasengerを利用しないことにしたのですが、やっぱり利用したほうがいいんじゃないかということで利用します。
最小構成でインストールしたfedora10だったので、ruby-devel、httpd-devel、gcc、gcc-c++とか事前にyum installしました。
WEBrickの停止
# kill -9 プロセスID
passengerのインストール
# gem install passenger
# passenger-install-apache2-module
ポリシーとして/etc/httpd/conf/httpd.confは修正せず/etc/httpd/conf.d/にconfファイルを作成します。
Passengerの設定は以下のファイルを作成し設定しました。
/etc/httpd/conf.d/rails.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6
PassengerRuby /usr/bin/ruby
VirtualHost周りの設定ファイルはvhosts.conf、ドメインごとの設定はvhosts-ドメイン.confとします
/etc/httpd/conf.d/vhosts.conf
NameVirtualHost *:80
/etc/httpd/conf.d/vhosts-redmine.example.jp.conf
<VirtualHost *:80>
ServerName redmine.example.jp
DocumentRoot /var/www/redmine/public
</VirtualHost>
昨日つくったファイルは削除し、apacheを再起動します。
# rm /etc/httpd/conf.d/redmine.conf
# service httpd configtest
# service httpd restart
エラーでてたのでログを確認したところ、sessionディレクトリに書き込み権限がなかったようです。
# chmod 0777 -R /var/www/redmine/tmp
symfony1.0のサポートはPHP5.0ですが、開発はPHP5.2とPEARが推奨されます。
プラグインの利用でPHP5.2とPEARが必須です。
$ ./symfony plugin-install http://plugins.symfony-project.com/sfJqueryPlugin
PHP Fatal error: Call to undefined function date_default_timezone_set() in /path/to/lib/vendor/symfony/data/tasks/sfPakePlugins.php on line 189
開発だけは5.2、PEAR必須なだけで、動作には必要ないかもしれません。
各種プラグインは1.0対応を謳ってるのにインストールしようとしたらPHP>5.10とでてくるものがあったり怪しいので注意が必要です。
PHP5.2使いたいところなんですが、CentOS5.2はPHP5.1.6なんですよね。。。
PHP
<?php
try {
throw new Exception('message');
} catch (Exception $e) {
echo $e->getMessage() . "\n";
echo $e->__toString() . "\n";
exit(1);
}
?>
$ php /home/cockok/tmp/exception.php
message
exception 'Exception' with message 'message' in /home/cockok/tmp/exception.php:2
Stack trace:
#0 {main}
シェルが値を返しました 1