ホーム » PHP

PHP」カテゴリーアーカイブ

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 99,325 アクセス


TryHackMe を使って…

先日「7日間でハッキングをはじめる本」を購入して,その内容をやった.
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性
7日間とはいかず,2週間程度かかってしまった.


20年位前に作成した Web のシステムでは,これらの知識がなかったため幾つか問題があった.
何年か前に修正済みで,そのほとんどが「クロスサイトスクリプティング」だったと思う.


OSコマンドインジェクション」などは知っていたが,ポートスキャンやパスワードの具体的な部分がわかった.
デフォルトポートの危険性や,パスワードで「数桁の数字」などは意味がないことがよくわかる.


外には公開していないので問題なかったとは思うが
LAN 内の幾つかの機器をポートスキャンしてみると,意図していないものが開いたままのものがあった.
10年位前に追加したもので,設定を間違えたのか,デフォルトで開いていたのか…


2024/10/02
この様な記事を書いたからというわけではないと思うが,昨日から次の様なアクセスが来ている.

//mish.work/?a='>"></script><svg/onload=confirm(1)>&b='>"></script><svg/onload=confirm(2)>&c=...

特に問題ないと思うが,ログが汚くなってしまう.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DSM 7 upload_max_filesize

WebGL データのアップロードのテストなどで,大きなデータが増えてきた.
https://itl.mish.work/i_Tools/to_wgl/
今までは 32 MB で,アップロードのコードでもその制限を加えていた.その制限を 64 MB に.


NAS によっては .htaccess や php.ini で指定するが,Synology NAS では .htaccess はエラーになる.
「Web Station」で「プロファイル」を選択,「編集」-「コア」タブで設定できる.
Synology NAS upload_max_filesize
memory_limit は「128M」になっているのでこれはそのまま.
post_max_size と upload_max_filesize を「64M」に変更.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

DS220+ PHP GD

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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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 も動作する様になった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

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


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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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>

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

次の所から日本語名のファイルをアップロードはできていたが,コードでの対応はうまくできていなかった.
https://itl.mish.work/…/upload.htm
そのため,アップロード時に 7 ビットのファイル名に変換することで対応していた.
これらのコードを書いたのは 3 年位前なので,その当時はまだよくわかっていなかった.
https://dev.mish.work/wordpress/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
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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

個人的なメモです.


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


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


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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

弦と矢と半径 – 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/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

弦と矢と半径 – 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

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

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 ) ;
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

弦と矢と半径 – 6

Python のコードを修正して「結果のみ」を出力する様に変更.

import	sys
import	math

def	r_cs	(c , s)	:	return	(        ( c*c )  / ( 8 *s ) +  s/2 )
def	s_rc	(r , c)	:	return	( r-math.sqrt(r*r - (c/2)*(c/2) )   )
def	c_rs	(r , s)	:	return	(   math.sqrt(r*r - (r-s)*(r-s) )*2 )

cmd =       sys.argv[1]
p1  = float(sys.argv[2])
p2  = float(sys.argv[3])

#print	(cmd + " " + str(p1) + " " + str(p2))

if  	cmd == "r_cs"	:	print	(r_cs(p1,p2))
elif	cmd == "s_rc"	:	print	(s_rc(p1,p2))
elif	cmd == "c_rs"	:	print	(c_rs(p1,p2))
#else	            	:	print	("error")

#print	("")

弦と矢と半径 スマートフォンからアクセス
PHP
あまり綺麗なコードでないので,ここには張り付けていません.リンク先を見てください.
PHP から Python の呼び出し
https://mish.myds.me/…/r_cs/6/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

弦と矢と半径 – 5

PHP から Python の呼び出しで,Python のコマンドライン引数を使用する.

<?php

	echo	("call python\n") ;

	echo	("\n") ;
	system	("python r_cs.py r_cs 6 1") ;
	system	("python r_cs.py s_rc 5 6") ;
	system	("python r_cs.py c_rs 5 1") ;

	echo	("\n") ;
	system	("python r_cs.py r_cs 8 2") ;
	system	("python r_cs.py s_rc 5 8") ;
	system	("python r_cs.py c_rs 5 2") ;

	?>

Python のコードは,

import	sys
import	math

def	r_cs	(c , s)	:	return	(        ( c*c )  / ( 8 *s ) +  s/2 )
def	s_rc	(r , c)	:	return	( r-math.sqrt(r*r - (c/2)*(c/2) )   )
def	c_rs	(r , s)	:	return	(   math.sqrt(r*r - (r-s)*(r-s) )*2 )

cmd =       sys.argv[1]
p1  = float(sys.argv[2])
p2  = float(sys.argv[3])

print	(cmd + " " + str(p1) + " " + str(p2))

if  	cmd == "r_cs"	:	print	(r_cs(p1,p2))
elif	cmd == "s_rc"	:	print	(s_rc(p1,p2))
elif	cmd == "c_rs"	:	print	(c_rs(p1,p2))
else	            	:	print	("error")

print	("")

Python がよくわかっていないので,いろいろなエラーが…
PHP から Python の呼び出し コマンドライン引数
https://mish.myds.me/…/r_cs/5/

弦,矢,半径

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

弦と矢と半径 – 2

今度は PHP からの呼び出し.

<?php

	echo	("call c++\n") ;
	system	("./a.out") ;

	echo	("call python\n") ;
	system	("python r_cs.py") ;

	?>

実際の動作を試すには,gcc と python が必要です.
cpp のコンパイルは
g++ -Wall r_cs.cpp
これで ./a.out が作成されます.
python の呼び出しは
python r_cs.py
r_cs.cpp のコンパイルと r_cs.py の実行
次の所で,同じ様な結果を表示します.
https://mish.myds.me/…/r_cs/2/

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

PHP から iconv コマンド呼び出し

シフトJIS のデータファイルをアップロードして WebGL で表示のテスト.
PHP から作成した .out を呼び出しているが,その中で文字コードの変換がうまく機能していない.
.out の中では iconv ライブラリを呼び出す.うまく機能しない時は iconv または uconv コマンド.
.out をコンソールから実行した時はうまく機能している.


いろいろと動作を調べていると,次の様なコマンドが PHP から呼出された時うまく機能していない様子.
iconv -f CP932 shiftjis.txt > out_file.txt
コンソールでは OK .
ここまで絞り込むのに 1 日かかった


今回の修正前 Synology NAS では次の様にしていた.
uconv -f sjis -t utf8 shiftjis.txt -o out_file.txt


先日テストしていた時 ASUSTOR NAS ではエラーになったので,単純に -t オプションを取ってしまった.

Iwao@AS5202T:/volume1/Web/Test/mics/tc_xconv $ iconv -f CP932 -t utf8 shiftjis.txt
iconv: conversion to utf8 unsupported
iconv: try 'iconv -l' to get the list of supported encodings
Iwao@AS5202T:/volume1/Web/Test/mics/tc_xconv $

iconv -l を幾つかの環境で調べていると “utf8” の指定がうまくない.
いろいろな環境でうまく機能しそうなのは “UTF-8” .
Fedora iconv -l | grep -i utf
Raspberry Pi iconv -l | grep -i utf
DS116 uconv -l | grep -i utf
AS5202T iconv -l | grep -i utf


-t オプションを指定しないとうまくないみたいで,次の様に変更.
iconv -f CP932 -t UTF-8 shiftjis.txt > out_file.txt
これで意図した動作になった.


2020/09/08 変換できない文字が存在した時に止まらない様な指定を追加.
https://mish.myds.me/wordpress/dev/2020/09/07/upload-mbcs-name/
exec_ic.hxx
text_gnc.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win10 に IIS と PHP – 3

どこかに設定があるのかもしれないが,
PHP でのエラーなどのログファイル.
場所は c:\Windows\Temp\ .
Win10 IIS PHP のログファイル
今回テストした PHP のコード

<?php
	$tempfile =             $_FILES['fname']['tmp_name'];
	$filename = './data/' . $_FILES['fname']['name'] ;
	$up_status = false ;
	if (is_uploaded_file($tempfile)) {
		$up_status = move_uploaded_file($tempfile , $filename) ;
		}
	$link	= "" ;
	if ($up_status) {
		$p_info = pathinfo($filename) ;
		$pi_ext = $p_info['extension'] ;
		$bmp_name = $filename . ".bmp" ;
		$to_bmp = FALSE ;
		if  	($pi_ext == "png")  {	$img = imagecreatefrompng ($filename) ;   $to_bmp = imagebmp($img,$bmp_name) ;	}
		else if	($pi_ext == "jpg")  {	$img = imagecreatefromjpeg($filename) ;   $to_bmp = imagebmp($img,$bmp_name) ;	}
		else if ($pi_ext == "bmp")  {	$bmp_name = $filename ;                   $to_bmp = TRUE ;                 	}
		if ($to_bmp) {
			$cmd_to	= ("rsz_bmp.exe") . " " . $bmp_name ;
			exec	($cmd_to,$out,$ret) ;
			}
		if ($ret == 0) {
			$rsz_file = $out[count($out)-1] ;
			$bak_file = $filename . ".bak." . $pi_ext ;
			rename($filename,$bak_file) ;
			$rsz_name = pathinfo($rsz_file)['basename'] ;
			$file_rsz = $p_info['dirname'] . "/" . $rsz_name ;
			rename($rsz_file,$file_rsz) ;
			if    	($pi_ext == "png")  {	$img_bmp = imagecreatefrombmp($file_rsz) ;   imagepng ($img_bmp,$filename) ;	}
			else if	($pi_ext == "jpg")  {	$img_bmp = imagecreatefrombmp($file_rsz) ;   imagejpeg($img_bmp,$filename) ;	}
			else if ($pi_ext == "bmp")  {	copy($file_rsz,$filename) ;                                             	}
			if (!file_exists($filename)) {
				$filename = $file_rsz ;
				}
			}
		if (file_exists($filename)) {
			$link .= "<hr/>" ;
			$link .= "<a href='" ;
			$link .= $filename ;
			$link .= "'>" ;
			$link .= $filename ;
			$link .= "</a>" ;
			$link .= "<br/>" ;
			$link .= "<img src='" ;
			$link .= $filename ;
			$link .= "'>" ;
			}
		}
	?>

rsz_bmp.exe で画像ファイルを 2^n にリサイズし,その結果のファイル名を標準出力に出力する.
画像を出力する imagebmp などはあまり速くない.
同様の PHP を Synology NAS 上で.
https://itl.mydns.jp/…/tex_pow2.php
PHP のコードが悪いのか? Synology NAS では DIB から元の画像に戻すのがうまくいかない.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win10 に IIS と PHP – 2

「IIS マネージャー」の「サイト」-「右クリック」で「Web サイトの追加…」.
手順は Win7 の時と同様
「ディレクトリの参照」を「有効」に.


PHP で BMP を作成するコードを検索すると,imagebmp というのがあった.
ここにあったサンプルを /Test/php_gd/make_bmp.php として保存.
呼び出されると php.bmp が生成される.


以下の動作は Synology NAS を使用しています.
Win10 ITSC Test php_gd make_bmp.php

コードを一部修正して現在時刻の画像を作成しています.
上のブラウザの画像をクリックすると現在時刻の画像ファイルを更新します.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win10 に IIS と PHP のインストール

Win10 環境で PHP を動作させるためのインストールなどの手順
今回使用したのは Win10 LTSC
通常版に比べて不要なものが入らないのでこれを選択.


以前 Win7 環境に PHP を入れた時の手順
IIS での PHP Web サイトの構成
IIS の有効化.CGI が必要.
Win10 IIS のインストール
IIS の動作の確認.
Win10 localhost にアクセス
Win10 他の PC から IP でアクセス
//win10-ltsc でアクセス
Web PI のインストール.
Web PI を起動して PHP をインストール.
Web PI で PHP の追加
何故かエラー?
PHP Managet for IIS は複数バージョンの PHP を切替えるツールの様で今回は無くても良いか?
Web PI で PHP インストールでエラー
php -v や php -r “phpinfo();” で確認すると動作はしている.
Win10 IIS  php -v
次の内容を php として保存し,ブラウザで開く. <?php phpinfo(); ?>
Win10 LTSC phpinfo()

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

PHP $_FILES

やってないとすぐ忘れてしまうのでメモ.
PHP マニュアル POST メソッドによるアップロード


php 側での次の様な取り出し.
 $tempfile = $_FILES[‘fname‘][‘tmp_name’];
fname‘ にあたる部分は,input タグの name 属性.
 <input type=”file” name =”fname” accept=”.jpg,.png”>


CHttpFile でのアップロード の場合は,汎用的になる様に処理している.

	function  uf_upload_files  ()  {
		$d_dir =  uf_get_upload_folder() ;
	//	echo	$d_dir	.  "<br/>\r\n" ;
		$up_status = false ;
		foreach	($_FILES as  $keys => $values) {
			$file_e	= $values ;
			$tempfile =         	$file_e['tmp_name'] ;
			$filename = $d_dir .	$file_e['name'] ;
			$filename = uf_get_up_file_name($filename) ;
			if (is_uploaded_file($tempfile)) {
				$up_status = move_uploaded_file($tempfile,$filename) ;
				}
			}
		return	$up_status ;
		}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.