ホーム » IIS
「IIS」カテゴリーアーカイブ
WS 2019 ,IIS インストール
AS5202T 上の WS2022 が,最近不安定な気がする.
元々,WSS の代わりと,テスト環境の IIS を 24 時間動かせると思い設定したもの.
Windows Update などのためにデスクトップを表示すると,フリーズしてしまう.
ログインしない状態では特に問題ない.
今回 IIS(Classic ASP)のテストが必要になり,PC の仮想環境に WS 2019 をインストールすることにした.
使用した iso が 2021/04 にダウンロードしたものだったので,ブラウザの更新などがうまくできない.
Window Update である程度の所まで上げる必要があるのか?
Classic ASP のインストール.手順は WS 2022 と同様.
次のメッセージが表示される場合,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.
今回は,本番の環境で次のエラー.ログを表示するページのデータ量が 4 MB を超えたと思われる.
Response オブジェクト エラー ‘ASP 0251 : 80004005’
応答バッファー処理の制限の超過
/_CMN_/DrawLogAccess.asp, 行 0
ASP ページの拡張が原因で、応答バッファーが構成された制限を超過しました。
対応方法は次の所にある.
IIS で Response.BinaryWrite を使用しているときに HTTP 500 または応答バッファーの制限を超えた場合のエラー
「管理者として実行」したコマンドプロンプトから操作する必要があった.
また「ASP」-「動作」-「制限プロパティ」-「応答バッファー処理の制限」でも変更可能.
WS2022 IIS 環境に PHP インストール
先日作成した Windows Server 2022 の IIS 環境 に PHP をインストール.
先ず,CGI を追加.
Web PI のインストール.
Web Platform Installer で PHP 8 のインストール.
次の内容の php を開き,うまく動作していることを確認.
<?php phpinfo(); ?>
WS2022 ASP ActiveX dll exe の設定
必要に応じてファイアウォールの設定.
オートメーションを使用しているのでエラーになる.
サーバ上で確認すると,
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.
「ASP」-「機能を開く」で「ブラウザへのエラー送信」を「True」に.
Server オブジェクト エラー ‘ASP 0177 : 800401f3’
Server.CreateObject に失敗しました
/_LIB_/L_Mainte.asp, 行 33
800401f3
エラーは Server.CreateObject を呼んでいる所.
set oFCnt = Server.CreateObject("AsFile.Counter")
AsFile.dll を登録 .
この dll は 32 ビットなので「32 ビット アプリケーションの有効化」.
次の様な asp を実行してテスト.
<%@ Language=VBScript %>
<% Option Explicit %>
<HTML>
<BODY>
<%
on error resume Next
dim oFCnt : set oFCnt = Server.CreateObject("AsFile.Counter")
dim oImgC : set oImgC = Server.CreateObject("AsImageConverter.Application")
Response.Write "AsFile Count.." & oFCnt.GetVersion & "<br>" & vbCrLf
Response.Write "AsImgC App …" & oImgC.GetVersion & "<br>" & vbCrLf
%>
</BODY>
</HTML>
AsimageConverter は exe でまだ登録していない状態.
「管理者」として起動したコマンドプロンプトで,AsImgCnv.exe を登録.
「コンポーネント サービス」で,IUSR が起動できるように設定.
32 ビット exe は,そのままの comexp.msc の起動では表示されない.
「 %windir%\system32\comexp.msc /32 」の様に /32 のオプションの指定が必要.
「セキュリティ」タブ-「起動と…」-「カスタマイズ」-「編集」.
「IUSR」を追加して「ローカルからのアクティブ化」にチェック.
これで 32 ビットのオートメーション dll と exe が起動できるようになる.
「ODBC データソース 32 ビット」の設定.
設定直後は,次のエラーになることがある?
Provider エラー ‘80004005’
この場合は OS を再起動すればうまく動作する 様になる.
参考にさせてもらったところ.
64bit Windows 環境で 32bit の DCOM コンポーネントを登録しても一覧に表示されない
64bit版Windowsでx32bit版のDCOMが表示されない
WS2022 Classic ASP インストール
Windows Server 2022 を VirtualBox 仮想マシンにインストール.
特に難しい所はない.
続いて Classic ASP のインストール.
「サーバーマネージャー」で「管理」-「役割と機能の追加」.
「サーバーの役割」で「Web サーバー(IIS)」を選択.
「役割サービス」で「ASP」を選択.
ASP をインストール.
簡単な asp ファイルを作成.
MSDN 2001/10
mk:@MSITStore:C:\Program%20Files%20(x86)\Microsoft%20Visual%20Studio\MSDN\2001OCT\1041\jpiis.chm::/iishelp/iis/htm/asp/iiwabasi.htm
<%@ Language=VBScript %>
<HTML>
<BODY>
This page was last refreshed on <%= Now() %>.
</BODY>
</HTML>
参考にさせてもらったところ.
Windows Server 2022 にIIS 10.0をインストールし、ASP.NETを有効化
windows server 2016で、classic asp を有効化
Windowsの機能の有効化(Windows Server 2016)
Windows のパスワードの複雑性の要件を無効にする (Windows Server Tips)
繋がらない!Windows10で共有フォルダにアクセスできない時の対処法
次のツールも問題なく動作した.
Win10 用 タイトルバーの色設定
2021/11/09
共有フォルダにアクセスしようとすると,アクセスできない.
[Window Title]
ネットワーク エラー
[Main Instruction]
\\WS2022 にアクセスできません
[Content]
名前のスペルを確認しても問題がない場合は、ネットワークに問題がある可能性があります。ネットワークの問題を識別して解決するには、[診断] をクリックします。
[^] 詳細を非表示にします [診断(D)] [キャンセル]
[Expanded Information]
エラー コード: 0x80070035
ネットワーク パスが見つかりません。
Win7 環境や Win10 20H2 などからは問題なくアクセスできる.
「グループポリシーでゲストログオンを許可する」必要があった.
Win10 IIS https 化
テスト環境の IIS を https 化しようと思い,いろいろと…
当然であるが「サイトバインドの追加」で「SSL 証明書」がない.
NAS では Let’s Encrypt を使用しているので調べると win-acme などがあるみたい.
そこから入った https://github.com/win-acme/win-acme/releases/ から落としてやってみたが…
「N」を選択して進めるがエラー.
C:\Users\Iwao\AppData\Local\Temp<c:\Users\Public\Documents\Tools\win-acme.v2.1.4.710.x64.trimmed\wacs.exe A simple Windows ACMEv2 client (WACS) Software version 2.1.4.710 (RELEASE, TRIMMED) ACME server https://acme-v02.api.letsencrypt.org/ IIS version 10.0 Running with administrator credentials Scheduled task not configured yet Please report issues at https://github.com/PKISharp/win-acme N: Create new certificate (simple for IIS) M: Create new certificate (full options) R: Run scheduled renewals (0 currently due) A: Manage renewals (0 total) O: More options... Q: Quit Please choose from the menu: n Running in mode: Interactive, Simple No sites with host bindings have been configured in IIS. Add one in the IIS Manager or choose the plugin 'Manual input' instead. Target plugin IIS aborted or failed N: Create new certificate (simple for IIS) M: Create new certificate (full options) R: Run scheduled renewals (0 currently due) A: Manage renewals (0 total) O: More options... Q: Quit Please choose from the menu:
何かの設定が足りないのか?ちょっとわからないので他の方法で…
自己署名証明書でやってみることに.
「IIS 自己署名証明書」で検索.
わかりやすかったのがここ.
Windows Server で自己署名 SSL 証明書を作成する手順
IIS マネージャーを使用した証明書の作成
IIS で SSL/TLS を 自己署名入り証明書 で 設定 する方法
これで https に対応できているかどうかのテストはできるので,今回はここまで.
いつも設定場所を忘れるので…
Microsoft VBScript 実行時エラー エラー ‘800a01ad’
ActiveX コンポーネントはオブジェクトを作成できません。
/_LIB_/L_Mainte.asp, 行 33
「アプリケーション プール」-「詳細設定」-「32 ビット アプリケーションの有効化」を「True」に.
Win10 に IIS と PHP – 6
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 ---------------------------
ポートを指定してのアクセス
引き続き 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
リバースプロキシ
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 を使用しています.
コードを一部修正して現在時刻の画像を作成しています.
上のブラウザの画像をクリックすると現在時刻の画像ファイルを更新します.
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(); ?>
データ送信 htm , php
html で複数のファイルを指定,php でそれを move_upload_file .
up_data.htm
<form enctype="multipart/form-data" action="up_data.php" method="POST">
upload file:<br/>
<input name="file_1" type="file" /><br/>
<input name="file_2" type="file" /><br/>
<input type="submit" value="send" />
</form>
up_data.php
<?php
if (!file_exists("./data")) {
mkdir("./data") ;
}
foreach ($_FILES as $keys => $values) {
$file_e = $values ;
$tempfile = $file_e[‘tmp_name’] ;
$filename = ‘./data/’ . $file_e[‘name’] ;
if (is_uploaded_file($tempfile)) {
move_uploaded_file($tempfile,$filename) ;
}
}
$scan_f = scandir("./data") ;
foreach ($scan_f as $key => $value) {
echo $value . "<br/>\r\n" ;
}
?>
IIS+PHP-3
さらに次の様な exe の起動.
exec (change_sp(“./imotowgl”)) ;
あまり関係ないが php と同じ場所に imotowgl と IMOtoWGL.exe が存在する.
この指定では,DS115j ではうまく動作しているが IIS 環境では起動できないみたい.
次の様に exe を付けるか,大文字などファイル名を正しく指定する必要があるみたい.
exec (change_sp(“./imotowgl.exe”)) ;
exec (change_sp(“./IMOtoWGL”)) ;
change_exe 関数を追加することに.
php の動作を確認していて,何かうまく動作しない.
と思ったら,「既定のドキュメント」の設定.
change_exe は,
function change_exe ($path) {
$exe = $path ;
if (DIRECTORY_SEPARATOR == ‘/’) { $exe = strtolower($exe) ; }
else { $exe = $exe . “.exe” ; }
$exe = str_replace (“/”,DIRECTORY_SEPARATOR,$exe) ;
return $exe ;
}
さらに実行ファイルの場所も,相対位置ではなく change_cmd 内で求める様に変更.
<?php
include ($_SERVER[“DOCUMENT_ROOT”] . “/…/i_lib.php”) ;
// exec (change_sp(“./bin/DrawNow”)) ;
exec (change_cmd(“DrawNow”)) ;
readfile(“./drawnow.htm”) ;
?>
動作は,DrawNow .
IIS+PHP-2
先日 php のインクルードなどに PHP_OS を利用していたが,
$base = “/…/web” ;
if (PHP_OS == ‘WINNT’) { $base = “c:/…/web” ; }
else { $base = “/…/web” ; }
include ($base . “/_lib/…/log.php”) ;
$_SERVER[“DOCUMENT_ROOT”] を見つけたので,
include ($_SERVER[“DOCUMENT_ROOT”] . “/_lib/…/log.php”) ;
他に,実行ファイルは OS に合った指定が必要な様で,
<?php
include ($_SERVER[“DOCUMENT_ROOT”] . “/…/log.php”) ;
logging () ;
exec (change_sp(“./bin/DrawNow”)) ;
// …
?>
Synology/DrawNow/
IIS 7/DrawNow/
IIS+PHP
先週まで DS115j 上の PHP と exe の環境を作っていたが,今度は IIS 上の PHP .
次の所を参考にさせてもらった.
Windows 8/7/Vista に PHP をインストール
IIS での PHP Web サイトの構成
以前の Win7 に IIS を入れた環境に設定.
PHP がうまく動作しているかの確認は,
コマンドプロンプトで,php -v や php -r “phpinfo() ;” .
次の内容を php として保存し,ブラウザで開く.
<?php phpinfo(); ?>
DS115j 上で動かしたものと同等の日時の表示は,何とか動作する様になった.
ほとんどが C++ のコードなので,今回の範囲ではあまり変更はなかった.
ただ exe を呼出す PHP のパスの指定や %TMP% にあたる部分がいろいろとありそう.
パス区切りは,’/’,’\’,’\\’ などで動作するみたいだが完全なのは ‘\\’ か?
ハードコードの部分は ‘/’ として PHP_OS により ‘\\’ に変換する関数を用意する.
コードは次の様なもの.
function Path_Normalize ($path_) {
$path = $path_ ;
if (PHP_OS == ‘WINNT’) {
$path = str_replace (“/”,DIRECTORY_SEPARATOR,$path) ;
}
return $path ;
}
単に,str_replace で良さそう.
$path = str_replace (“/”,DIRECTORY_SEPARATOR,$path) ;
c の関数マクロの様な使い方はわからなかったので,change_sp($path) の関数とした.
さらに,php ファイルのインクルードは次の様な感じで振り分け.
if (PHP_OS == ‘WINNT’) {
include (“./lib.php”) ;
}
else {
include (“/…/i_lib/2017.06/lib.php”) ;
}
用途によっては,realpath でもいける?
Web + exe
最終的に目指したい所は,
参考にさせてもらったのは,
第3回 極めてシンプルなCGIを体験する.
C:\...\Iwao>"C:\...\testCGI2\DmpSVG.exe"
Content-Type: text/html
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" >
<rect x="15" y="10" width="70" height="40" stroke="blue" fill="white" />
</svg>
C:\...\Iwao>
mac で,
先ず,php から ls の呼び出し.
exec_ls.php
<?php
system('ls') ;
ターミナルで実行(php exec_ls.php)すると,
php から a.out の呼び出し.
main.cpp
#include <iostream>
int main() {
std::cout << "hello c++ php" << std::endl ;
return 0 ;
}
g++ main.cpp としてコンパイル.
exec.php
<?php
system('./a.out') ;
ターミナルから php -S 127.0.0.1:8000 などとしておくと,
DS115j で,
php から ls の呼び出しまでは同様.
Iwao@DS115j:~/www/T_php/temp/test$
Iwao@DS115j:~/www/T_php/temp/test$ ls
exec_ls.php index.php main.cpp
Iwao@DS115j:~/www/T_php/temp/test$
Iwao@DS115j:~/www/T_php/temp/test$ php exec_ls.php
exec_ls.php
index.php
main.cpp
Iwao@DS115j:~/www/T_php/temp/test$
Iwao@DS115j:~/www/T_php/temp/test$
Win7 x86 に IIS
今回は Win7 環境で 3D データをダウンロード可能とするための設定.
「コントロールパネル」-「プログラムと機能」から
「Windows の機能の有効化または無効化」.
「インターネットインフォメーションサービス」にチェック.
localhost にアクセスすると,
ローカルから http://win7-mg-/ も可能.
他の PC から接続すると,
接続がタイムアウトしました
win7-mg- のサーバーからの応答が一定時間以内に返ってきませんでした。
このサイトが一時的に利用できなくなっていたり、サーバーの負荷が高すぎて接続できなくなっている可能性があります。しばらくしてから再度試してください。
他のサイトも表示できない場合、コンピューターのネットワーク接続を確認してください。
ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox によるウェブアクセスが許可されているか確認してください。
他の PC からも可能にする場合は,ファイアウォールの設定が必要.
「IIS マネージャー」の「サイト」-「右クリック」で「Web サイトの追加…」.
サイト名や物理パスを指定して「OK」.
—————————
Web サイトの追加
—————————
バインド ‘*:80:’ は別のサイトに割り当てられています。このサイトに同じバインドを割り当てると、いずれか一方のサイトしか開始できなくなります。重複するバインドを追加しますか?
—————————
はい(Y) いいえ(N)
—————————
「バインド ‘*:80:’ は…」と出るがそのまま「はい」.
「Default Web Site」-「右クリック」-「バインドの編集…」.
「ポート」を「80」でない,「8000」などに.
状態が停止しているので「開始」を「クリック」.
まだファイルなどが存在しないので,localhost にアクセスすると,
他の PC からは,「403 – 許可されていません: アクセスが…」
最終的には「無効」にするが,「ディレクトリの参照」を「有効」に.
3D データを web に展開.
localhost/3D_Data/ を開くと,
localhost/3D_Data/three_js/ThreeIMO.htm を開くと,
動作はしているが,データが表示されない.
localhost/3D_Data/three_js/Cube.imo を開くと,
MIME マップの追加が必要で,
「MIME の種類」をどう指定するべきかは不明だが,
「application/IMO」として追加.
これらの幾つかの情報は TechNet にもある.
TechNet IIS での静的な Web サイトの構築
Win 10 IE , Edge
Win 10 の IE や Edge からの User agent を調べていて,
Edge は “Edge/12.10240” が後ろの方にあるのでこれで判断できる.
他に AppleWebKit Chrome Safari などが前にあるので,Edge と限定するためにはコードの変更(判断順の変更)が必要.
IE では “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Trident/8.0; .NET4.0C; .NET4.0E)” となっている.
イントラネット環境で IE 11 とするには,「互換表示設定」の変更が必要.
Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko
MSDN ユーザー エージェント文字列の変更
Win 10 での デスクトップ AP の実行で,
ドロップダウン付のツールバーの表示がおかしくなる現象は,まだ残っているみたい.
ただ,以前の様に簡単には現象を再現できない.