お世話になります。
PCレスdrawbotのようなものを作りたいと思い、RaspberryPiでarduinoを制御すべく勉強中です。
RaspberryPiからinkscapeのエクステンション経由での作画は無事に出来ました。
今度は『Chromiumブラウザ上でタップで画像ファイルを開き、inkscapeのエクステンションを実行』と考えていますが、最初の段階の『画像ファイルを開く』で躓きました。
apache2でローカル開発環境を構築、ドキュメントルートは/var/www/html/
から/home/pi/www
に変更し、wwwディレクトリとファイルのパーミッションは一旦775
にしました。ユーザ名はデフォルトのpiのままです。
$ ls -l -rwxrwxr-x 1 pi pi 6935 3月 26 11:32 helloworld.svg -rwxrwxr-x 1 pi pi 424 4月 1 13:59 index.php drwxrwxr-x 2 pi pi 4096 4月 1 13:35 www
pi と www-data は同グループです。
$ groups pi adm dialout cdrom sudo audio www-data video plugdev games users input netdev spi i2c gpio
ターミナルから以下を実行するとinkscapeでsvg(画像)ファイルが開きます。
$ inkscape --file=/home/pi/www/helloworld.svg
ところが、chrome(chromium)から以下のphpファイルを開くと何も起こらないのです。
該当のソースコード
index.php
php
1 2<html> 3<head> 4</head> 5<body> 6<?php 7 $cmd = 'inkscape --file=/home/pi/www/helloworld.svg'; 8 exec($cmd, $opt, $return); 9 print_r($opt); 10 echo '結果:'.$return; 11?> 12</body> 13</html>
これを実行すると、
chrome
1Array ( ) 結果:0
結果:0と表示されているのでexec
は成功したと思われますが、inkscapeが立ち上がりません。
試したこと
『何も起こらない』ではなく『起こっている事を書け』と怒られそうですが、本当に何も起こらないのです…。
ログがどこにあるのか探せず(./.config/chromium/Default/など、それっぽいところはサラッと見ました)、そもそもログは自分で生成するよう設定するものなのか分からず往生しています。
これなどはうまくいきます。
php
1echo exec('whoami'); 2echo exec('ls');
svgファイルのデフォルトアプリをinkscapeにした上で、xdg-openとすると、
php
1exec('xdg-open helloworld.svg'); 2exec('xdg-open /home/pi/www/helloworld.svg'); 3// いずれも結果:3(3て何ですか?)
これは結果:3でexec
が失敗。
gnome-open
は使えませんでした。
chown でファイルの所有者をwww-data
に変更→変化なし。
こちらを参考にapacheの実行ユーザをpiに変更→変化なし(すぐにwww-dataに戻しました)。
chromiumも疑い、設定/詳細設定/サイトの設定/ファイルの編集/サイトがデバイスのファイルやフォルダを編集しようとしたときに確認する→offに変更→変化なし。
VNCがマズいのかと、ラズパイのTFTモニタ上で再読込み→変化なし…。
Linuxを触り始めたばかりで他に何を試したら良いのか見当が付きません。
どうぞ宜しくお願い致します。
補足情報
以下環境です。
raspberry pi 3 + tft 3.5 inch touch shield
Raspbian GNU/Linux 10 (buster) Release:10
Linux raspberrypi 4.19.97-v7+ #1294 SMP Thu Jan 30 13:15:58 GMT 2020 armv7l GNU/Linux
PHP 7.3.14-1~deb10u1
Apache/2.4.38 (Raspbian)
Real VNC でwindows10 PCより操作
あなたの回答
tips
プレビュー