ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2022年12月12日月曜日

XAMPP7.4とPHP5.6の共存

 開発環境のWindowsを新しくしてXAMPP7.4をインストールしたが、PHP5.6で作った案件のメンテも引き続きあるので同時とは言わないまでもある程度共存させたい。

基本は下記サイトなどのモジュールを切り替えてApacheを再起動する方法をとる。

参考サイト:https://www.m-kobayashi.org/software/tools/Xampp_PHP_VUP.html


しかし、これだけでは動いてくれなかったので解決方法をメモしておく。


-その1-

VC11のランタイムがないのでApache + php5.6が起動しない

↓

Microsoftの「Visual Studio 2012 更新プログラム 4 の Visual C++ 再頒布可能パッケージ」のページから、vcredist_x64.exe, vcredist_x86.exeをダウンロードして、msvcp110.dllをインストールする。

https://www.microsoft.com/ja-jp/download/details.aspx?id=30679


-その2-

PHPのIntlが動かない

↓

php56フォルダ内のic*.dllをapache\bin内にコピー


2020年10月8日木曜日

FuelPHP1.8.2のSessionをレンサバで動かす

特に1.8.2はPHP7.3に対応してくれているのでFuelPHPで結構サイトを作成していたものとしては助かります。

個人的にはORMの方は問題なかったのですが、Session周りで困ったことが起こりました。
こんなエラーメッセージがログに残ります。


shutdown - Fuel requires Sodium support in PHP. Either use PHP 7.2+, install the libsodium PECL extension, of the sodium-compat composer package!


1.8.2でSessionでsodiumというのを利用するようになってまあそれがないという事なんですが、windowsとかroot持っているサーバなんかだとphp_libsodium.dllとかlibsodiumとかを入れて対応できたんですが、レンタルサーバではこのあたりの対応ができず動かない。

composerもうまくいかない。

ネットの知見を探して...ありました。

こちらのサイトを参考にさせていただいて事なきを得ました。

↓

https://qiita.com/ookishin2018/items/5d17f75f8fdad4d8fa04


手順は以下の通りです。


githubからparagonie/sodium_compatをダウンロード

https://github.com/paragonie/sodium_compat


fuel/app/vender/にディレクトリ「paragonie」を作成して、解凍したsodium_compat-masterをsodium_compatにして設置


fuel/app/bootstrap.phpにautoload.phpを追加

require APPPATH ."vendor/paragonie/sodium_compat/autoload.php";


これでSessionが動きました。



sodium_compatの設置場所はfuel/vender/paragonie/にして、fuel/bootstrap.phpに「require COREPATH ."vendor/paragonie/sodium_compat/autoload.php";」とか書いたほうがいいかもしれないですね。



2014年6月2日月曜日

moodleリンク書き換え

moodleのサイトを移転してurlが変わった時のHTMLエディター内のurl等の書き換え方。

公式(http://docs.moodle.org/2x/ja/Moodle%E3%81%AE%E7%A7%BB%E8%A1%8C)の情報が古くて、 http://yourserver.com/admin/replace.phpが見つからなかった。

正しくは、

http://yourserver.com/admin/tool/replace/
とか
http://yourserver.com/yourdirectory/admin/tool/replace/


2014年3月4日火曜日

TCPDFにフォントを追加

以前は難しくて挫折してしまったTCPDFへのフォントの追加。
最新版6.0.062ならさくっと簡単にできました。

tcpdfを設置したディレクトリ内のtoolにtcpdf_addfont.phpがありこれを使います。

1.toolディレクトリにフォントファイルを設置します。

2.tcpdf/toolに移動

3.php tcpdf_addfont.php -i XXXX.ttf

埋め込み用のフォントを追加するのがこれだけでできる。超簡単。
3のコマンドで自動的にfontsディレクトリにフォントファイルがコピーされ関連ファイルが自動的に作成されます。

注意点は、tcpdf_addfont.phpを覗くとデフォルトの状態で相対パスでうまく動くようになっているので、このあたりをカスタマイズしているとtcpdf_addfont.php内のパスの設定なども変えないといけないことぐらいでしょうか。

2013年10月19日土曜日

CodeIgniterのFormヘルパーのバグ(form_prep())

最近はFuelを使っていたのだがFuelの動作要件を満たさないサーバに当たってしまったので久々にCodeIgniter (2.1.4)を利用。

なんだけども、CodeIgniterのFormヘルパーにバグがあって困った。

Formヘルパーの各種関数を使うとvalueに設定する値は文字参照に変換してくれるのだが、同じname属性のものを2回使うと2回目は文字参照に変換してくれない。

これ↓を参考にform_helper.phpを拡張するMY_form_helper.phpを作成してみた。
https://bitbucket.org/matsuu/codeigniter-reactor/commits/20ca07f73bc3/

先人に感謝
MY_form_helper.php
function form_prep($str = '', $field_name = '')
{
static $prepped_fields = array();
// if the field name is an array we do this recursively
if (is_array($str))
{
foreach ($str as $key => $val)
{
$str[$key] = form_prep($val);
}
return $str;
}
if ($str === '')
{
return '';
}
// we've already prepped a field with this name
// @todo need to figure out a way to namespace this so
// that we know the *exact* field and not just one with
// the same name
if (isset($prepped_fields[$field_name]) && $prepped_fields[$field_name] == $str)
{
return $str;
}
$str = htmlspecialchars($str);
// In case htmlspecialchars misses these.
$str = str_replace(array("'", '"'), array("'", """), $str);
if ($field_name != '')
{
$prepped_fields[$field_name] = $prepped_fields[$field_name] = $str;;
}
return $str;
}
/* End of file MY_form_helper.php */
/* Location: ./application/helper/MY_form_helper.php */

2013年1月10日木曜日

error_reportingの.htaccessでの書き方

以前メモったと思ってたのに無かったのでメモ。

.htaccessに以下のように記述しても有効にならない。

php_value error_reporting E_ALL & ~E_DEPRECATED

まあ当然か。
以下のどちらかでかく
php_value error_reporting "E_ALL & ~E_DEPRECATED"

php_value error_reporting 22527

(以前数字で書けという記述を見たが"でくくっても大丈夫だった)

数字のほうはE_ALLやE_DEPRECATED等の定数を加減したもの。
以下のようにすれば簡単に求められる。

<?php
 echo E_ALL & ~E_DEPRECATED;
?>
前は手計算してたよw。