Iwao myds

dev.mish.work へ移行しました.

この画面は、簡易表示です

PHP

DS220+ PHP GD

DS220+ で PHP を動かすと,うまく動作しないものがある.
原因は「GD ライブラリ」を使用したものなどか動作していない.
「Web Station」-「スクリプト言語の設定」を「選択」.
「カスタマイズされたプロファイル」-「PHP 7.4」を「選択」して「編集」.
「拡張」タブを選択し「gd」に「チェック」,「保存」.
DS220+ PHP プロファイルを編集 gd
これでうまく動作する様になった.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


DS220+ セットアップ-3

WordPress などは動作する様になったが,通常のページで PHP が動作していない?
html は表示できるが,php は「500 この要請を処理している間にエラーが発生しました。」のエラー.
DS220+ phpinfo  500 この要請を処理している間にエラーが発生しました。


以前 DS115j をセットアップ した時に,PHP のバージョンなどを指定できた.
DSM 6  Apache と PHP の指定
検索してもあまりうまく引っかからない.
Web Station をいろいろ弄っているとあった.
「Web サービス ポータル」で表示されるリストから「デフォルト サーバー」を選択すると「編集」できる様になる.
DSM 7  Web Station  PHP の指定
これで,php も動作する様になった.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


ASUSTOR NAS upload_max_filesize

ASUSTOR NAS でアップロードできるファイルの制限は 2M になっている.
ASUSTOR NAS upload_max_filesize


今回,別の NAS の WordPress ファイルをインポートしようとすると,2MB の制限に引っ掛かって読み込めない.
以前は PHP 5.6 に切替て対応した が,今はこの方法が使えないので php.ini を変更することに.
php.ini upload_max_filesize を 20M に
SSH 接続 して php.ini の upload_max_filesize を 20M に.
反映させるために App Central で PHP 7 を一度停止して,すぐに実行.
Web Center の「Webサーバー」で「有効」にする必要がある.
今回のインポートしようとしたファイルは,11 MB 程度あった.
そのため post_max_size も 8M から 32M に変更.


1 時間程度かかってインポートできた.

WordPress のインポート
Iwao の新規ユーザを作成できませんでした。投稿は現在のユーザに関連付けられます。
amp_validation_error 48cc07251c8d5157b9e9a897d0ed4499 のインポートに失敗しました
amp_validation_error 502662b90c836da49548b5e05fa9600e のインポートに失敗しました
amp_validation_error 6ba58cff20693639d052998163af35c9 のインポートに失敗しました
amp_validation_error 74f0569466346207f7e684496a8f8abc のインポートに失敗しました
amp_validation_error 8c32527465654f1f049900723ae0e156 のインポートに失敗しました
amp_validation_error 95f0f68b6007fd64c4baaea2c4190c0d のインポートに失敗しました
amp_validation_error a23b7a8625ee5499036e0a944b77fb53 のインポートに失敗しました
amp_validation_error e9e8eb16d0b29ff8c18b17b472b7e774 のインポートに失敗しました
“https://mish.myds.me/wordpress/dev/2021/12/03/ws2022-iis-php/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/about/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2021/12/03/ws2022-iis-php/ws2022_iis_add_php_8/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2021/12/22/asustor-nas-mail-server/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2021/12/22/asustor-nas-mail-server/as5202t_mail_server_receive/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2021/12/28/asustor-mail-server-fw/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2021/12/28/asustor-mail-server-fw/as5202t_mail_server_return/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2022/01/05/do-not-work-qnap-nas-page/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。
“https://mish.myds.me/wordpress/dev/2022/01/05/do-not-work-qnap-nas-page/qnap_install_perl/” をインポートできませんでした。投稿タイプ amp_validated_url が有効ではありません。

すべて完了しました。 ではお楽しみください !

インポートしたユーザーのパスワードと権限を更新してください。

https://as.mish.work/wordpress/


.htaccess で指定する方法


試してはいませんが,WordPress でのサイズのみであれば .htaccess を直接編集した方が簡単です.
ASUSTOR NAS WordPress .htaccess
次の様な記述を最後に追加します.
php_value post_max_size 20M
php_value upload_max_filesize 20M

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


WS2022 IIS 環境に PHP インストール

先日作成した Windows Server 2022 の IIS 環境 に PHP をインストール.
先ず,CGI を追加.
CGI の追加


Web PI のインストール.
Web Platform Installer で PHP 8 のインストール.
PHP 8 のインストール
次の内容の php を開き,うまく動作していることを確認.
<?php phpinfo(); ?>

この投稿は役に立ちましたか? 役に立った 役に立たなかった 1 人中 0 人がこの 投稿 は役に立ったと言っています。


QR コード生成 – 3

今まで幾つかの所でサイトのアドレスの表示に使用してきた.
QRcode Perl CGI & PHP scripts ver. 0.50
これを他で使えないかと調べていると…

  1. 引数がうまく渡せない.2 つ目以降が無視されているような感じ.
  2. 100 文字位を超えると正しく表示できない.

どうも php の呼び出し方が悪かったみたいで,…/qr_img.php に与える引数を変更.

{
	p_data	=	p_data.substr(0,106) ;
	var	last_p	=	p_data.lastIndexOf('&') ;
	if (last_p > 0) {
		p_data	=	p_data.substr(0,last_p) ;
		}
	s_data	=	p_data ;
	p_data	=	escape		(p_data) ;
	p_data	=	"?d="	+	 p_data	;
//	p_data	=	p_data	+	"&e=M"	 ;
	}

使い方は以前と同様で .js のパスを変更.
<script src ="//itl.mydns.jp/_lib/js/i_lib/2022.01/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>

<script src ="//itl.mydns.jp/_lib/js/i_lib/2022.01/c_qr_img.js"> </script>
<script> call_qr_img_href() ; </script>

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


日本語名ファイルのアップロード

次の所から日本語名のファイルをアップロードはできていたが,コードでの対応はうまくできていなかった.
https://itl.mydns.jp/…/upload.htm
そのため,アップロード時に 7 ビットのファイル名に変換することで対応していた.
これらのコードを書いたのは 3 年位前なので,その当時はまだよくわかつていなかった.
https://mish.myds.me/wordpress/dev/2017/09/04/chttpfile-http-post/
またテクスチャファイル名などが日本語の場合はうまくいかないことも多かった.


最初,日本語名でそのままアップロードすると,いろいろ困った現象に…
PC から NAS 上のアップロード先のファイルが見えなくなってしまった.
一度スマートフォンの NAS 用のファイルマネージャから参照すると PC でも見えるようにはなった.
動作を見ると,サーバ側のコードは動作しているが,格納しているファイル名がうまく渡せていない.
ログなどを確認すると,デバッグ用 MBCS.exe でファイル名が「シフト JIS」のままになっていた.


送られるデータとしては次の所にあたる部分.
$_FILES[‘userfile’][‘name’]
これを UTF-8 にして渡す必要がある.
コードとしては次の所.

v_char	Make_send_data	(LPCTSTR upFile,LPCTSTR ___boundary)
{
	v_char	up_Data = v_c_Load(upFile) ;
	v_char	sndData ;
	{
		tstring	ct_boundary	=	___boundary ;
		tstring	file_img	=	::QuotM_Add(_T("file_img")) ;
		tstring	fileName	=	::QuotM_Add(::Path_GetName(upFile)) ;
		tstring	dataPre ;
		tstring	dataPst ;
		dataPre+=	CT_boundary__	+	ct_boundary	+			C_CRLF ;
		dataPre+=	CD_cd_f_d_n_	+	file_img	+	CD_cd__fn_	;
		dataPre+=				fileName	+			C_CRLF ;
		dataPre+=	CT_ct_a_o_s							C_CRLF ;
		dataPre+=									C_CRLF ;
		dataPst+=									C_CRLF ;
		dataPst+=	CT_boundary__	+	 ct_boundary	+	CT_boundary__	C_CRLF ;
	//	v_char	vc_pref = ::To_v_char(::To__string(dataPre.c_str())) ;
		v_char	vc_pref = ::To_v_char(::To_UTF8   (dataPre.c_str())) ;
		v_char	vc_post = ::To_v_char(::To__string(dataPst.c_str())) ;
		sndData.insert(sndData.end(),vc_pref.begin(),vc_pref.end()) ;
		sndData.insert(sndData.end(),up_Data.begin(),up_Data.end()) ;
		sndData.insert(sndData.end(),vc_post.begin(),vc_post.end()) ;
		}
	return	sndData ;
	}

To__string でそのまま char の配列としていたものを UTF-8 にしてから char の配列に.
UpFile.hxx アップロードするファイル名を UTF-8 に
UpFile.hxx
quotm.hxx


2020/09/08
今度はサーバ側のコード.
本当はクライアントの CInternetSession のコンストラクタで与える User Agent .
UTF-8 でセットすれば良いのはわかるが,引数が LPCTSTR なのでどうすれば良いかわからず.
そのためサーバ側のログを出力する部分でうまく機能しないことがある.
Synology NAS では,一部文字化けするが特に問題なさそう.
ASUSTOR NAS や QNAP NAS では,20200908.txt の読み込み時に止まっている様子.
次の様に //IGNORE を付加して変換.

iconv API は iconv_open(_T("UTF-8//IGNORE")) 
iconv -f CP932 -t UTF-8//IGNORE 20200908.txt >  20200908.uf8
uconv -f CP932 -t UTF-8 -i      20200908.txt -o 20200908.uf8
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


アップロードがうまく機能しない?

個人的なメモです.


php と form でアップロードしていた所に,汎用のアップロードツール で行うとうまく機能しない.
http://ds116/Test/mics/mba_wgl/


原因は,php の post を受け取って $_FILES を処理している所.
$tempfile = $_FILES[‘fname’][‘tmp_name’] ;
<input type="file" name="fname" accept=".dat">
https://mish.myds.me/wordpress/dev/2018/04/19/php-_files/
これとアップロードツールの C のコード ::Make_send_data で設定している名称が合っていない.


php の受け取る部分を修正して意図した動作になった.
アップロードがうまく機能しない?

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


弦と矢と半径 – 8

Python を使用しないで PHP のみで.

<?php
	function	r_cs	($c , $s)	{	return	(    ( $c*$c )  / ( 8 *$s )   +  $s/2 ) ;	}
	function	s_rc	($r , $c)	{	return	( $r-sqrt($r*$r - ($c/2)*($c/2) )     ) ;	}
	function	c_rs	($r , $s)	{	return	(    sqrt($r*$r - ($r-$s)*($r-$s) )*2 ) ;	}
	?>

PHP のみで実装
https://mish.myds.me/…/r_cs/8/

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


弦と矢と半径 – 7

input タグで number を使用している部分.
step=’0.001′ などとすれば小数値を入力できるが,欲しい動作ではない.
例えば 1.23456789 など任意の値を入力可能にしたかった.
step=’any’ と指定することで小数部を入力できるようになる.
<input type=’number’ name=’c’ value=’1.234567890′ size=’15’ step=’any’ />
https://mish.myds.me/…/r_cs/7/
弦と矢と半径 7

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。


PHP escapeshellarg

以前から気にはなっていた PHP の escapeshellarg を調べてみた.


次の様なコードがうまくない.

<?php
	$param  = ($_REQUEST['input']) ;
	$cmd_to = "cal " . $param ;
	system	( $cmd_to ) ;
	?>

次の様な入力を意図しているが,
…/cal/?input=2020
cal 2020
後ろに次のコマンドを付加されるとうまくない.
…/cal/?input=2020;ls -l
cal 2020 ; ls -l
cal 2020 が表示された後 ls -l が動作している.
コマンドインジェクション」と呼ぶらしく,検索するといろいろと出てくる.


コマンドの引数にあたる部分に escapeshellarg を使用するか,$param をチェックするする必要がある.

	$cmd_to  = "cal " . escapeshellarg ( $param ) ;
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  • カテゴリー:


top