Iwao Dev

気付いたことをメモしています.

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

IIS

データ送信 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" ;
        }
    ?>



  にほんブログ村 IT技術ブログへ


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


  にほんブログ村 IT技術ブログへ


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/


  にほんブログ村 IT技術ブログへ


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 でもいける?


  にほんブログ村 IT技術ブログへ


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$


  にほんブログ村 IT技術ブログへ


Win7 x86 に IIS

今回は Win7 環境で 3D データをダウンロード可能とするための設定.
three_js_imo


「コントロールパネル」-「プログラムと機能」から
  「Windows の機能の有効化または無効化」.
「インターネットインフォメーションサービス」にチェック.
win7_iis_check
localhost にアクセスすると,

ローカルから http://win7-mg-/ も可能.


他の PC から接続すると,
接続がタイムアウトしました
win7-mg- のサーバーからの応答が一定時間以内に返ってきませんでした。
このサイトが一時的に利用できなくなっていたり、サーバーの負荷が高すぎて接続できなくなっている可能性があります。しばらくしてから再度試してください。
他のサイトも表示できない場合、コンピューターのネットワーク接続を確認してください。
ファイアーウォールやプロキシでネットワークが保護されている場合、Firefox によるウェブアクセスが許可されているか確認してください。

他の PC からも可能にする場合は,ファイアウォールの設定が必要.
win7_iis_80_enable


「IIS マネージャー」の「サイト」-「右クリック」で「Web サイトの追加…」.
win7_iis_site_add
サイト名や物理パスを指定して「OK」.
win7_iis_add_site
—————————
Web サイトの追加
—————————
バインド ‘*:80:’ は別のサイトに割り当てられています。このサイトに同じバインドを割り当てると、いずれか一方のサイトしか開始できなくなります。重複するバインドを追加しますか?
—————————
はい(Y) いいえ(N)
—————————
win7_iis_add_80
「バインド ‘*:80:’ は…」と出るがそのまま「はい」.
「Default Web Site」-「右クリック」-「バインドの編集…」.
win7_iis_edit_bind
「ポート」を「80」でない,「8000」などに.
状態が停止しているので「開始」を「クリック」.
win7_iis_start_new_site


まだファイルなどが存在しないので,localhost にアクセスすると,
win7_iis_error_403_14
他の PC からは,「403 – 許可されていません: アクセスが…」
最終的には「無効」にするが,「ディレクトリの参照」を「有効」に.
win7_iis_dir_list
win7_iis_dir_enable
win7_iis_local_empty


3D データを web に展開.
win7_iis_3d_data
localhost/3D_Data/ を開くと,
win7_iis_local_3d_data
localhost/3D_Data/three_js/ThreeIMO.htm を開くと,
win7_iis_three_js_empty
動作はしているが,データが表示されない.
localhost/3D_Data/three_js/Cube.imo を開くと,
win7_iis_cube_imo_404_3
MIME マップの追加が必要で,
win7_iis_mime_
「MIME の種類」をどう指定するべきかは不明だが,
win7_iis_mime_imo
「application/IMO」として追加.


これらの幾つかの情報は TechNet にもある.
TechNet IIS での静的な Web サイトの構築


  にほんブログ村 IT技術ブログへ


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 の実行で,
  ドロップダウン付のツールバーの表示がおかしくなる現象は,まだ残っているみたい.
  ただ,以前の様に簡単には現象を再現できない.


  にほんブログ村 IT技術ブログへ


Win 10 Pro 10240 にインストールできない

2015/03 頃はインストールできたと思うが…


2015/09/11
IIS をアンインストールして,インストール(「Windows の機能の有効化または無効化」)してみたがダメ.


手作業で環境を作成しようとして…
  オートメーションの部分が起動できない.
幾つかのいつもの設定は行ってたが,ちょっと忘れていて,
  exe などを置いていたフォルダのアクセス権を正しく設定してなかった.
  他に今回の固有の環境であるが,レジストリから登録情報を削除する必要もあった.


うまく動作したのは VC 8 Static MFC だったが VC 12 DLL にすると,またうまく動作しない?
VC 12 Static にしてもダメで VC 8 Static に戻したのに,今度はうまくない.
Win 10 を再起動してうまく通った.
うまく動作しなくなった後,タスクマネージャから終了できないものがありそれが影響するのか?


もう一回 VC 12 でビルドしたものにチャレンジ.
VC 12 Static MFC は通った.
VC 12 DLL MFC でも通り,結局原因は掴めず.


今回の事とは直接関係ないが,エクスフローラが何度か落ちた.
OS 自体の問題なのか,作成したシェルエクステンションの問題なのかは不明.


  にほんブログ村 IT技術ブログへ


IIS 環境の再設定

AsTrmM_VC8 が動作しない.
—————————
Microsoft Visual C++ Runtime Library
—————————
Runtime Error!
Program: C:\Temp\…\Release.080\AsTM0129.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.
—————————
OK
—————————
AsTrmM_VC6 は OK .
どうも OpenMP がうまくない?


S:\ …\PAto.exe にあると,


Win 7 で,Classic ASP は「World Wide Web サービス」-「アプリケーション開発機能」-「ASP」をチェック.
以前 XP に設定した時のメモ
Web ページの公開


2015/02/16
asp ファイルが存在する所を開くと,
  サーバー エラー
  500 – 内部サーバー エラーです。
  検索中のリソースに問題があるため、リソースを表示できません。
サーバ側で動かすと,
  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.
どうもデフォルトでは出力されなくなったみたい.


今度は次の様なコードで実行時エラー.
  dim oToPA
  set oToPA = Server.CreateObject(“PAto.AsXxx”)
  Microsoft VBScript 実行時エラー エラー ‘800a01ad’
  ActiveX コンポーネントはオブジェクトを作成できません。
  /Test/Test_1st/DrawVer.asp, 行 6
Win XP では ActiveX.exe を起動すれば良かったが,Win 7 では「管理者」とする必要があるので,
  「コマンドプロンプト」を「管理者として実行」して,その中で exe を起動.


アクセス権が許可されてないと,
  Server オブジェクト エラー ‘ASP 0178 : 80070005’
  Server.CreateObject アクセス エラー
  /Test/Test_1st/DrawVer.asp, 行 6
  許可を確認中に Server.CreateObject の呼び出しに失敗しました。
  このオブジェクトへのアクセスは拒否されます。
アクセス権を設定
Win 7 では IUSER


OS が 64 ビットの時,そのままでは ActiveX.dll が起動しない.


他の PC から,http://win7-iis:8080/ の様に接続できない(localhost:8080 は可能).
  対応方法がよくわからないが,ファイアウォールの設定で 8080 を追加してみたら通る様になった.


2015/02/17
サーバのオートメーション機能で ini に設定値を保持しているが更新されない
(IUSER はフルコントロールとして存在している).
  Everyone の追加で意図した動作(ini を更新できる)にはなった.


  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。