2010年02月25日

Upload 2Mでコケル対策

デフォルトでは2M(サーバーによっては5M)以下ならUploadできるが、超えるとUploadできない現象が起こる。
(VCL for PHPであれば、ファイル名とかに何も入らない状況)

原因はphp.ini 内でリミット設定がある事。

1)さくらのレンタルサーバーの場合
サーバーコントロールパネル→PHP設定の編集において以下を追記
memory_limit=128M
post_max_size=32M
upload_max_filesize=16M
max_execution_time=600


2).htaccessを使う場合
.htaccessに以下を追記

php_value memory_limit 128M
php_value post_max_size 32M
php_value upload_max_filesize 16M
php_value max_execution_time 600


値の大きさは
memory_limit > post_max_size > upload_max_filesize
であること。
posted by すら at 17:32| PHP(delphi for PHP)

2009年12月25日

Delphi For PHP の思わぬ罠(1)クラス名

クラス名はちゃんと管理して分けておかないといけない(当たり前)

意外に、コピペでクラスを作成したときなど、クラス名を替えるのをわすれてしまう(汗
特定ページを表示後、別の特定ページが表示されないときはまずこれを疑うこと。
posted by すら at 19:37| PHP(delphi for PHP)

VCL for PHP

最新(ファイル別)のリポジトリ
http://vcl4php.svn.sourceforge.net/viewvc/vcl4php/trunk/vcl/

もしくは
http://sourceforge.net/projects/vcl4php/
posted by すら at 16:53| PHP(delphi for PHP)

2009年11月04日

ページ移行(redirect)

ボタンクリックなど、リンク以外でページを移動する場合は

redirect( $url );

$url - クライアントを転送すべき新規URL

を使う。
この場合の注意点として、「クライアントにどんな種類のデータも送らない」ということ。

このredirectがちゃんと動かない場合は、何かを送っている。

たとえば。
require_once でライブラリ的なクラスを呼んでいて、その中でチェックライトな echoなり、var_dumpなりがあるとき。
あるいは
ファイル先頭の <?php の前に改行やスペースがあるとき。
・・・など。


もしかして、redirect は delphi for PHP の関数かも。
実装はおそらく
function redirect( $url )
{
header("HTTP/1.1 301 Moved Permanently")
header("Location: " . $url );
}
といったところと推定。
posted by すら at 10:08| PHP(delphi for PHP)

2009年03月11日

(PHP)ファイルのステータスのキャッシュをクリア

clearstatcache()を使うとよいそうな。

影響を受ける関数
stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), および fileperms().
posted by すら at 14:59| PHP(delphi for PHP)

2008年12月13日

(VCL2.0) サーバーの利用可能関数に注意!

VCL自体は utf8ベースで使うものと考えること。(EUCはトラブルの元らしい)

ini_set( "mbstring.internal_encoding", "utf8" );

ini_set( "mbstring.encoding_translation", "0" );



なんかで回避できるかも?



また。
ReflectionClass をVCL中より呼んでいるが、サーバーによっては使えない設定になっている(exファーストサーバーの共用サーバーなど)。
実際にサーバーのUPするまで解らないのでかなり問題。


new ReflectionClass( "自分で作ったクラス名" );

なんかをやってみて途中でダウンするようなら駄目。


php.ini中にある

zend.ze1_compatibility_mode

をOffにしたら動くかも。
posted by すら at 11:22| PHP(delphi for PHP)

(PHP) デフォルトのマルチバイト文字コード

サーバーによっては、encording_translation がONになっているものがあり、文字化けの原因になる。

.htaccess に以下設定できるものがあれば、設定する。
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation Off

もしくは。
php.iniに。
posted by すら at 11:21| PHP(delphi for PHP)

IEの等幅ピッチによる位置あわせ

IEは等幅ピッチを指定しても等幅にならない。
カタカナ、アルファベット、数字が混在すると駄目。
位置あわせをしようとしてもずれる。

FireFoxはちゃんと合う。
posted by すら at 11:20| PHP(delphi for PHP)

(VCL2.0) ヘッダ情報の出力順番入れ替え

例:タイトルとmetaタグのcharsetの行を入れ替える。

vcl\forms.inc.php の1600行目あたり
-----------------------------
$title=$this->Caption;

echo "$title\n";

-----------------------------




-----------------------------

echo "if (($this->DocType!='dtHTML_4_01_Strict') && ($this->DocType!='dtHTML_4_01_Transitional'))
{
echo "/";
}
echo ">\n";
-----------------------------

の後ろに持ってくる。
posted by すら at 11:18| PHP(delphi for PHP)

(VCL2.0) jscalender の日本語化

comctrls.inc.php の中で、DateTimePicker / MonthCalendarのClass定義を探す。
→面倒であれば、jscalendar で検索をかける。

__construct($aowner)の中で
$this->_calendar = new ..
の行において、"en" を"jp"にする。

スキンを変更したい場合は同様に
'calendar-win2k-2'
の部分を変更する

ついでにUTCをAsia/Tokyoに替えておくのもいいかも。

---------------------------
vcl\jscalendar\lang において。

元からあるcalendar-jp.jsは不具合だらけなので、calendar-en.jsから自分で作る。
calendar-jp.js をリネームして残し、calendar-en.js をcalendar-jp.jsの名前で保存。
保存したcalendar-jp.jsの中身を日本語に変更、utf-8(実際に出力する日本語コード)で保存。
posted by すら at 11:18| PHP(delphi for PHP)

(VCL2.0) Memoのクリアができない

Memoコントロールで一度表示するとClear()メソッドでクリアできない。
SetLines(array())もだめ。
Lines = array(); は効いた。

どうやら、メソッド関数は駄目なものが多いようだ。
色々試す中で、GetLines()、SetLines()は上手く動かない。
Linesプロパティを相手に操作するとうまくいく。


[2008/07/31 追記]
クリアでLines = array(); を使用した場合、Add()が上手く動かないときがある。
Lines = array();を使うときは、ライン追加もLinesプロパティ相手に行う必要があるようだ。
posted by すら at 11:17| PHP(delphi for PHP)

(VCL2.0) Image のサイズが合わない

Imageは画像をセット後、Width/Heightを再設定しないとImageコントロールのサイズにかかわらず画像が元のサイズで表示される。
posted by すら at 11:16| PHP(delphi for PHP)

ListView の Column 操作サンプル

カラム操作サンプル

// 幅を指定してカラム追加
$this->ListView->addColumn( "カラム1", 80 );
$this->ListView->addColumn( "カラム2", 160 );
$this->ListView->addColumn( "カラム3", 80 );

// リストビュー内各要素を編集不可とする
$clm = $this->ListView->getColumns();
foreach( $clm as $ColumnData)
{
$ColumnData->setEditable(false);
}
$this->ListView->setColumns($clm);
posted by すら at 11:15| PHP(delphi for PHP)

サーバーに転送したソフトが動かない

確認点は以下の通り

1)use_unit の確認
 使用してないコンポーネントをシステムが勝手にインクルードに追加し、エラーになるときがある。
 ソースコード先頭のuse_unit()文を確認、使ってないコンポーネントのものは削除する。

2)文字コードの問題
  ブラウザがなぜか指定文字コードを無視することが多々ある。

3)サーバーのPHPの設定
サーバーのPHPのConfigure Command の内容によっては、無言で、エラーになる。
たとえば、マルチバイトの関数がインストールされていないサーバーで、マルチバイト系関数を使うとだんまり停止となる。
posted by すら at 11:14| PHP(delphi for PHP)