Win10 に IIS と PHP – 5
DB の場所が変わって「ODBC データ ソース アドミニストレーター」で正しく指定.
動作を確認していると,
Provider エラー '80004005' エラーを特定できません /_LIB_/L_LogAcc.asp, 行 224
サイトの再起動を試したが変わらず.
OS を再起動することでうまく通るようになった.
他にもチェックしていると,
HTTP エラー 500.19 - Internal Server Error ページに関連する構成データが無効であるため、要求されたページにアクセスできません。 エラー情報の詳細: モジュール CustomErrorModule 通知 SendResponse ハンドラー ASPClassic エラー コード 0x800700b7 構成エラー 一意のキー属性 'fileExtension' が '.imo'に設定されている種類 'mimeMap' の重複コレクション エントリを追加できません 構成ファイル \\?\C:\Users\Public\Documents\web\Test\web.config 要求された URL http://localhost:80/Test/ASP/Default.asp 物理パス C:\Users\Public\Documents\web\Test\ASP\Default.asp ログオン方法 匿名 ログオン ユーザー 匿名 構成ソース: 5: <staticContent> 6: <mimeMap fileExtension=".imo" mimeType="text/imo" /> 7: </staticContent> 詳細情報: このエラーは、Web サーバーまたは Web アプリケーションの構成ファイルの読み取りに問題があるときに発生します。エラーの原因に関する情報が、イベント ログに記録されている場合があります。 詳細情報の表示 »
Microsoft VBScript 実行時エラー エラー '800a01ad' ActiveX コンポーネントはオブジェクトを作成できません。 /_LIB_/L_LstDir.asp, 行 14
コードの部分を見ると,
set oFSys = Server.CreateObject(“AsFile.FileSys”)
「アプリケーション プール」-「詳細設定」-「32 ビット アプリケーションの有効化」を「True」に.
他にも,
HTTP エラー 500.19 - Internal Server Error ページに関連する構成データが無効であるため、要求されたページにアクセスできません。 エラー情報の詳細: モジュール CustomErrorModule 通知 SendResponse ハンドラー StaticFile エラー コード 0x800700b7 構成エラー 一意のキー属性 'fileExtension' が '.imo'に設定されている種類 'mimeMap' の重複コレクション エントリを追加できません 構成ファイル \\?\C:\Users\Public\Documents\web\Test\web.config 要求された URL http://localhost:80/Test/iisstart.png 物理パス C:\Users\Public\Documents\web\Test\iisstart.png ログオン方法 匿名 ログオン ユーザー 匿名 構成ソース: 17: <staticContent> 18: <mimeMap fileExtension=".imo" mimeType="text/imo" /> 19: </staticContent> 詳細情報: このエラーは、Web サーバーまたは Web アプリケーションの構成ファイルの読み取りに問題があるときに発生します。エラーの原因に関する情報が、イベント ログに記録されている場合があります。 詳細情報の表示 »
MIME の設定がダブっているとうまくない様で,下位の方を削除しようとすると
--------------------------- MIME の種類 --------------------------- この操作の実行中にエラーが発生しました。 詳細: ファイル名: \\?\C:\Users\Public\Documents\web\Test\web.config 行番号: 18 エラー: 一意のキー属性 'fileExtension' が '.imo'に設定されている種類 'mimeMap' の重複コレクション エントリを追加できません --------------------------- OK ---------------------------
T90Chi Win10 1803 からの更新
Win10 1803 だった T90Chi が Windows Update 1903 ? の対象に.
そのまま受け入れて進めると 0x80070057 のエラーに.
どうしたものかと思ったが「やり直す」を選択.
1 時間程度経ったと思う.
今度は「次の作業が必要です」.
VirtualBox をアンインストール.
画面を撮り忘れたが,10 GB 以上の空きがある外部記憶装置が必要に.
追加している SD カードを指定して継続.
また 1 時間程度して再起動の画面.
その後なかなか進まない?
4 時間程度経って,
「コンピューターに対する変更を元に戻しています…」のループ.
更に 2 時間程再起動を繰り返していたが,「電源」+「音量-」でシャットダウンさせた.
ポートを指定してのアクセス
引き続き IIS 環境へのアクセスを調べているが…
幾つか調べたことのメモ
IIS 部分を PHP から呼び出せないかと思い見つけたのが file_get_contents .
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
//www.example.com/ はちゃんと表示できるが,他のサイトなどではうまく表示されないことが多い?
auひかりのルータ Aterm BL190HW の設定を幾つか調べたが,特に影響しているものはなさそう.
ASUS RT-AC86U の設定でいろいろ見ていたら「ポートフォワーディング」が気になった.
試しに DS115j に接続する設定を追加したら,うまく動作する.
外部ポート 8000 内部ポート 80 内部 IP アドレスを 192.168.1.115 に.
http://iwao.synology.me:8000/ でアクセスできる.
同様に Win10 IIS も設定したがうまく接続できない.こうなると Win10 の設定か?
Win10 の設定を見直していたら IPv4 の設定の「デフォルトゲートウェイ」がブランクになっていた.
これを正しく設定したらうまく接続できるようになった.
http://iwao.synology.me:8080/
IPv6 でのアクセス
テスト用に IIS 環境へ接続できないかと…
LAN 内であれば次の様な指定で可能.
//192.168.1.80:8080/
//win10-ltsc:8080/
ASUS RT-AC86U を追加前は BL190HW のポートマッピング設定で設定していた.
LAN 側ホスト 192.168.0.80 プロトコル TCP ポート番号 8080
IPv6 ならそれぞれが指定できると思い試すことに…
指定方法は次のページにあった.
URLで IPv6 のIPアドレスを指定して接続する
DS115jhttp://[240f:33:c6c7:1:211:32ff:fe5f:e655]/Win10http://[240f:33:c6c7:1:241f:8b43:86b9:28de]:8080/Win 7http://[240f:33:c6c7:1:855d:191e:86aa:6fc3]/
LAN 内であれば意図した動作になりアクセスできる.
どこかの設定が足りないみたいで WAN からはアクセスできていない.
2020/04/22 追加
DevXhttp://[240f:33:c6c7:1:81c7:3574:8836:64f6]/
2022/02/20
この時やりたかったことの,仮想ホスト機能などを使った設定.
NAS の仮想ホストの設定
仮想ホストの設定 ポート
2022/04/07
リバースプロキシ
FBX SDK 2020.0.1
FBX SDK がまた新しくなっている.
とりあえずダウンロードしてインストール.
ビルドなどは次のタイミングを予定.
Lib を組み込む部分のコードは次の様にしている.
#include <FbxSdk.h> #ifdef FBXSDK_VERSION_STRING #if (FBXSDK_VERSION_MAJOR >= 2014) #define FS_VER_GT_2014_00 #endif #if (FBXSDK_VERSION_MAJOR >= 2019) #if (FBXSDK_VERSION_MINOR >= 1) #define FS_VER_GT_2019_01 #endif #endif #if (FBXSDK_VERSION_MAJOR >= 2020) #define FS_VER_GT_2019_01 #endif #if defined (FS_VER_GT_2019_01) #if defined (_DLL) #pragma comment (lib, "LibXml2-MD.lib") #pragma comment (lib, "Zlib-MD.lib") #else // !(_DLL) #pragma comment (lib, "LibXml2-MT.lib") #pragma comment (lib, "Zlib-MT.lib") #endif // (_DLL) #endif #if defined (FS_VER_GT_2014_00) #if defined (_DLL) #pragma comment (lib, "LibFbxSDK-MD.lib") #else // !(_DLL) #pragma comment (lib, "LibFbxSDK-MT.lib") #endif // (_DLL) #endif #endif // FBXSDK_VERSION_STRING
Win10 に IIS と PHP – 4
ここでは Windows 10 環境に Classic ASP をインストールする手順を記述しています.
Windows Server 2022 へのインストールは次の所にあります.
WS2022 Classic ASP インストール
WS2022 ASP ActiveX dll exe の設定
Classic ASP は IIS 7.0 と IIS 7.5 に既定ではインストールされない
「インターネットインフォメーションサービス」の以下の項目をチェックしてインストール.
1.「Web 管理ツール」-「IIS 6 管理互換」-「IIS メタベースおよび IIS 6 構成との互換性」
2.「World Wide Web サービス」-「アプリケーション開発機能」-「ASP」
そのままではスクリプトのエラーメッセージは表示されない.
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
Classic ASP スクリプトのエラー メッセージはもはや既定では Web ブラウザーに表示されない
これで localhost には表示されるようになる.
Microsoft VBScript 実行時エラー エラー ‘800a01ad’
ActiveX コンポーネントはオブジェクトを作成できません。
/_LIB_/L_Mainte.asp, 行 33
別の PC からアクセスすると,
サーバー エラー
500 – 内部サーバー エラーです。
検索中のリソースに問題があるため、リソースを表示できません。
localhost からのアクセスの様なエラーメッセージを表示する方法はわからなかった.
「ActiveX コンポーネントはオブジェクトを作成できません」エラーは 32 ビット ActiveX.dll が起動できないため.
「アプリケーション プール」-…-「32 ビット アプリケーションの有効化」を「True」に.
ActiveX.dll が登録されていないと,
Server オブジェクト エラー ‘ASP 0177 : 8007007e’
Server.CreateObject に失敗しました
/_LIB_/L_Mainte.asp, 行 33
登録するには「管理者として実行」した「コマンドプロンプト」などで
RegSvr32 ActiveX.dll
ActiveX.exe は IUSER で起動できるように設定する必要がある.
Win10 に IIS と PHP – 3
どこかに設定があるのかもしれないが,
PHP でのエラーなどのログファイル.
場所は c:\Windows\Temp\ .
今回テストした 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 から元の画像に戻すのがうまくいかない.
Win10 に IIS と PHP – 2
「IIS マネージャー」の「サイト」-「右クリック」で「Web サイトの追加…」.
手順は Win7 の時と同様.
「ディレクトリの参照」を「有効」に.
PHP で BMP を作成するコードを検索すると,imagebmp というのがあった.
ここにあったサンプルを /Test/php_gd/make_bmp.php として保存.
呼び出されると php.bmp が生成される.
以下の動作は Synology NAS を使用しています.
コードを一部修正して現在時刻の画像を作成しています.
上のブラウザの画像をクリックすると現在時刻の画像ファイルを更新します.
Windows API で DIB のリサイズ
プログラミング Windows 第5版(上)
第14章 ビットマップと BitBlt
14.4 GDI ビットマップオブジェクト
HelloBit.c より
i_DIB DIB_resize (const i_DIB& dib,const SIZE& new_s) { i_DIB rsz_dib ; RECT rect = { 0,0, new_s.cx , new_s.cy } ; { HDC hdc = ::GetDC(NULL) ; HDC hmem = ::CreateCompatibleDC(hdc) ; HBITMAP hbmp = ::CreateCompatibleBitmap(hdc,rect.right,rect.bottom) ; ::SelectObject(hmem,hbmp) ; ::ReleaseDC(NULL,hdc) ; ::StretchDIBits(hmem,rect,::Get_DIB_RECT(dib),dib) ; i_DIB rsz = ::ToDIB(hbmp) ; ::DeleteDC(hmem) ; ::DeleteObject(hbmp) ; rsz_dib = rsz ; } return rsz_dib ; }
Raspberry Pi に ImageMagick
以前調べた時に入っていた ImageMagick .
先日追加した SD の Pi 環境には入っていないのでインストール.
検索すると sudo apt install ImageMagick とある.が,入力すると,
pi@raspberrypi:~ $ sudo apt install ImageMagick
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
E: パッケージ ImageMagick が見つかりません
正しくは,
sudo apt install imagemagick
パッケージ名は小文字で指定する. imagemagick
Win10 に IIS と PHP のインストール
Win10 環境で PHP を動作させるためのインストールなどの手順
今回使用したのは Win10 LTSC .
通常版に比べて不要なものが入らないのでこれを選択.
以前 Win7 環境に PHP を入れた時の手順
IIS での PHP Web サイトの構成
IIS の有効化.CGI が必要.
IIS の動作の確認.
Web PI のインストール.
Web PI を起動して PHP をインストール.
何故かエラー?
PHP Managet for IIS は複数バージョンの PHP を切替えるツールの様で今回は無くても良いか?
php -v や php -r “phpinfo();” で確認すると動作はしている.
次の内容を php として保存し,ブラウザで開く. <?php phpinfo(); ?>
Fedora 環境で bmp が読めない
先日 GLUT でテクスチャ表示 の動作を確認していた時のこと.
Raspberry Pi ではうまく表示できることまで確認.
Fedora ではうまく読めない.
コードでテクスチャを生成しての表示ではうまくいく.
32 ビット色 BMP のコードは Synology NAS Web サーバなどでもそれなりに動作している.
32 bit exe ではうまく読み書きできているみたい.
Raspberry Pi (ARM) と Fedora (x64) で BITMAPFILEHEADER などを見ると 64 bit 環境でうまくない.
例えば bmih.biSize が x64 では 0x50 になっている(ARM では 0x28).
def_bmp.hxx が間違っているみたい.
どうも long の定義が Windows と Linux などでは異なるため.wiki 整数型
DWORD と LONG の定義を u_32 と i_32 に変更(u_32 ,i_32 は i_define.hxx で定義している).
//typedef unsigned long DWORD; typedef u_32 DWORD; //typedef long LONG; typedef i_32 LONG;
GLUT でテクスチャ表示
今度はテクスチャ.次の様なコードで面に貼り付け.
#include "glut_cg.hxx" #include "gonsprmt.hxx" #include "i_dib_f.hxx" i_DIB tex_01 ; int main(int argc, char* argv[]) { { tstring test_bmp = _T("./Tex01.bmp") ; // test_bmp = _T("/run/user/1000/gvfs/smb-share:server=ds116.local,share=web/i_Tools/Doc/blog/3D_Data/Tex01.bmp") ; #ifdef _MSC_VER test_bmp = _T("//DS116/web/i_Tools/Doc/blog/3D_Data/Tex01.bmp") ; #endif tex_01 = ::DIB_Load(test_bmp.c_str()) ; } { GonsA gnsa ; { Gons1 box = ::Gons_Box(Vd3(5,0,5)) ; box.SetColor(0xffffff) ; gnsa.push_back(box) ; } ::set_GonsA(gnsa) ; ::set_Extent(::GonsA_GetExtent(gnsa)) ; { C_glut* gm = ::get_c_glut() ; gm->BG = Vd4(0.9) ; gm->EP = Vd3(0,-10,0) ; } } ::glutInitWindowPosition(200,100) ; ::glutInitWindowSize (600,600) ; ::glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) ; ::glutInit (&argc,argv) ; ::glutCreateWindow (argv[0]) ; ::glutReshapeFunc (cv_resize) ; ::glutDisplayFunc (cg_display) ; ::glutKeyboardFunc (cv_keyboard) ; ::glutMouseFunc (cv_mouse) ; ::glutMotionFunc (cv_motion) ; ::cv_init () ; { ::glPixelStorei(GL_UNPACK_ALIGNMENT,1) ; ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,tex_01.GetWidth(),tex_01.GetHeight(),0,GL_RGB,GL_UNSIGNED_BYTE,tex_01.GetP_Bits()) ; ::glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST) ; ::glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST) ; ::glEnable(GL_TEXTURE_2D) ; } ::glutMainLoop () ; return 0 ; }
::glTexImage2D の指定と Tex01.bmp の形式が合っていないため
32 ビット色の画像なので ::glTexImage2D の GL_RGB を GL_RGBA に.
色の順番が違うので ::glTexImage2D を見ると GL_BGRA_EXT があったのでこれを指定.
GLUT でうまく表示されない?
以前作成した現在時刻を WebGL で表示するコードを GLUT を使用した方法に書き直し.
右側の面が正しく表示されていない.
見えない面を表示しない様に判断しているコードは次の様なもの.
{ Vd3 ev = eye ; Vd3 nv ; Vd3 pt ; for (size_t fvIndex=0 ; fvIndex<pia.size() ; fvIndex++) { long fVert = pia[fvIndex].x ; long nVert = pia[fvIndex].y ; Vd3 n1 = ::Vx_get(nrms,nVert) ; Vd3 p1 = ::Vx_get(pnts,fVert) ; nv = nv + n1 ; pt = p1 ; } ev = ev - pt ; nv = nv.Normalized() ; ev = ev.Normalized() ; double theta = ::deg(acos(nv.Dot(ev))) ; if (theta > 90) { continue ; } }
原因は,描画用に与えている視点で目標点が加算されていなかったため.
void draw(void) { GonsA* ga = get_GonsA() ; Vd3 eye = ::get_c_glut()->EP ; // eye+= ::get_c_glut()->TP ; ::GonsA_to_gl(*ga,eye) ; }
最終的にはこのあたり(C_glut)の見直しが必要.
OpenGL 線を表示すると途切れる?
線の配列から連続線に変更して OpenGL で表示すると途切れた表示になってしまった.
線分として表示していた時のコード
for (size_t lIndex=0 ; lIndex<lins.size() ; lIndex++) { Vl2 ln = lins[lIndex] ; Vd3 p0 = ::Vx_get(pnts,ln.x) ; Vd3 p1 = ::Vx_get(pnts,ln.y) ; ::glBegin(GL_LINES) ; { ::glVertex(p0....) ; ::glVertex(p1....) ; } ::glEnd() ; }
途切れてしまったコード
for (size_t lIndex=0 ; lIndex<lins.size() ; lIndex++) { v_long lin = lins[lIndex] ; ::glBegin(GL_LINES) ; // ::glBegin(GL_LINE_STRIP) ; for (size_t vIndex=0 ; vIndex<lin.size() ; vIndex++) { long ln = lin[vIndex] ; Vd3 pt = ::Vx_get(pnts,ln) ; ::glVertex(pt....) ; } ::glEnd() ; }
原因は glBegin の指定が GL_LINES のままだった.
GL_LINE_STRIP に修正して意図した表示になった.
OpenGL Programming Guide
Chapter 2 State Management and Drawing Geometric Objects
VS 2019 Raspberry Pi への接続で…
VS 2019 の「オプション」-「クロスプラットフォーム」-…-「リモートヘッダー…」の「更新」を選択すると,
エラーが発生しました。Could not connect to the remote system or the connection was lost。詳細については、C:\Users\Iwao\AppData\Local\Temp\vslinux_header_update_log.txt を参照してください。トラブルシューティングについては、https://aka.ms/AA23jat をご覧ください。
SSH コマンドで接続しようとするとやはり接続できない.IP では可能.
Microsoft Windows [Version 10.0.18362.418] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Iwao>ssh -l pi raspberrypi ssh: Could not resolve hostname raspberrypi: \202\273\202\314\202\346\202\244\202\310\203z\203X\203g\202\315\225s\226\276\202\305\202\267\201B C:\Users\Iwao>ssh -l pi 192.168.1.36 pi@192.168.1.36's password: Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Nov 12 17:04:32 2019 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi:~ $
FBX SDK 2020.0
FBX SDK のページを見たら新しい 2020.0 があった.
ダウンロードしてインストール.
構成マネージャで 2020.0 用の DebugK と ReleaseK を追加.
追加のインクルードディレクトリを 2020.0 に.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.0\include;%(AdditionalIncludeDirectories)
追加のライブラリディレクトリを 2020.0 に.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.0\lib\vs2017\x64\Release;%(AdditionalLibraryDirectories)
LibXml2 と ZLib をリンク するため,以前にコメントにしていた次の部分を有効に.
これでビルドはできるようになった.
動作確認はこれから.