pvpVirtualbox最新化
環境
OS : Windows11 64bit
Web : httpd-2.4.54-win64-VS16
PHP : php-8.1.12-Win32-vs16-x64
VirtualBox:バージョン 7.0.2 r154219
Github : https://github.com/phpvirtualbox/phpvirtualbox
phpvirtualboxのReleaseがVersion5.2のため、上記環境では動作しない。
PHP8対応
修正
1.関数の型宣言
修正前 (行130あたり)
public function offsetExists($offset)
修正後
public function offsetExists($offset): bool
他も同様にする。
public function offsetUnset($offset): void
public function offsetGet($offset): mixed
public function rewind(): void
public function current(): mixed
public function key(): mixed
public function valid(): bool
public function count(): int
nextは別対応
#[\ReturnTypeWillChange]
public function next()
VirtualBox7対応
セットアップ
1.最新のSDKをダウンロードして適用する。
VirtualBoxのダウンロードサイトにアクセスし、
「VirtualBox 7.0.2 Software Developer Kit (SDK)」からダウンロードする。
https://download.virtualbox.org/virtualbox/7.0.2/VirtualBoxSDK-7.0.2-154219.zip
- 1-1.vboxServiceWrappers.php
「VirtualBoxSDK-7.0.2-154219\sdk\bindings\webservice\php\lib\vboxServiceWrappers.php」を
「phpvirtualbox-develop\phpvirtualbox-develop\endpoints\lib\vboxServiceWrappers.php」に上書きする。
-
1-2.wsdl
「VirtualBoxSDK-7.0.2-154219\sdk\bindings\webservice」にある
vboxweb.wsdlとvboxwebService.wsdlを
vboxweb-7.0.wsdlとvboxwebService-7.0.wsdlにリネームして、
「phpvirtualbox-develop\endpoints\lib」に置く。6.1などが置いてあるがそのままにしておいて問題なし。 -
1-3.config.php
修正前
define('PHPVBOX_VER', '6.1-0');
修正後
define('PHPVBOX_VER', '7.0-0');
1-4.vboxconnector.php
変更前
'audioAdapter' => array(
'enabled' => $m->audioAdapter->enabled,
'audioController' => (string)$m->audioAdapter->audioController,
'audioDriver' => (string)$m->audioAdapter->audioDriver,
変更後
'audioSettings' => array(
'enabled' => $m->audioSettings->Adapter->enabled,
'audioController' => (string)$m->audioSettings->Adapter->audioController,
'audioDriver' => (string)$m->audioSettings->Adapter->audioDriver,
レイアウト修正
画面レイアウトの修正 ・・・ 作業中
ここらへんね。
課題
- フォルダ選択ダイアログ
セキュリティの観点からブラウザの仕組みに入ってないから出来なさそう。
-> phpならローカルフォルダを掘れそう。
日本語対応
日本語対応の背景と調査
「Graphics Controller」が英語のままなので日本語にしようと思い、
languages\ja.xmlに追加すればいいと思ったが、そんな単純ではなかった。
languages\source\ja.datに追加が必要そう。構成を解析中
aはArray、sは文字列っぽい。a:1はArrayの中身が1つ。s:8は文字列が8桁。
Arrayの中身は項目+値の構成っぽい。
a:1{s:8:項目;a:204:値}となっていそう。
a:2であれば
{
s:7:"comment"; ・・・Array[0]の項目
s:25:"Language name, in English"; ・・Array[0]の値
s:11:"translation"; ・・・Array[1]の項目
s:8:"Japanese"; ・・・Array[1]の値
}
解析ツールを作ったところ、VBoxGlobalにビデオメモリーが入っているので、ここに入れればよさそう。
対応方法
できた
開発メモ
Cache Busting対策
javascriptソースを変更しても反映されずに見落としたことがあった。
紛らわしいのでCache Bustingを施しておく。
変更前
phpvirtualbox-develop\index.html
変更後
phpvirtualbox-develop\index.php
<?php
$phpvirtualboxJsDate = date('YmdHis', filemtime('./js/phpvirtualbox.js'));
$dialogsJsDate = date('YmdHis', filemtime('./js/dialogs.js'));
?>
中略
<script type="text/javascript" src="js/phpvirtualbox.js?<?php echo $phpvirtualboxJsDate ?>"></script>
<script type="text/javascript" src="js/dialogs.js?<?php echo $dialogsJsDate ?>"></script></script>
内部dataの確認方法
ブラウザのConsoleで確認できた。
「$('#vboxPane').data('vboxHostDetails')」などを出力可能。