質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

0回答

925閲覧

ラズパイのローカル開発環境で、PHP の exec がうまく行きません

arakuman

総合スコア17

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2020/04/01 08:25

編集2022/01/12 10:55

お世話になります。
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て何ですか?)

これは結果:3execが失敗。
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より操作

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2020/04/01 08:30

サーバプログラムでGUIのプログラムを立ち上げようとしていますか?
arakuman

2020/04/01 09:02

お察しの通りです。tkinterなども考えたのですが、見た目を整えるのはcssの方が簡単かと思いjavascriptとPHPで、と考えております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問