Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4632 > unrolled thread
| Started by | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| First post | 2021-01-10 16:01 +0100 |
| Last post | 2021-01-14 21:01 +0100 |
| Articles | 8 — 3 participants |
Back to article view | Back to de.comp.lang.php
CD-Laufwerk mit eject öffnen Carlos Naplos <carna@onlinehome.de> - 2021-01-10 16:01 +0100
Re: CD-Laufwerk mit eject öffnen Matthias P. Würfl <matthias@wuerfl.com> - 2021-01-11 12:58 -0800
Re: CD-Laufwerk mit eject öffnen Carlos Naplos <carna@onlinehome.de> - 2021-01-11 23:52 +0100
Re: CD-Laufwerk mit eject öffnen Carlos Naplos <carna@onlinehome.de> - 2021-01-12 01:32 +0100
Re: CD-Laufwerk mit eject öffnen k@rl.pflaesterer.de (Karl Pflästerer) - 2021-01-12 18:38 +0100
Re: CD-Laufwerk mit eject öffnen Carlos Naplos <carna@onlinehome.de> - 2021-01-13 18:53 +0100
Re: CD-Laufwerk mit eject öffnen k@rl.pflaesterer.de (Karl Pflästerer) - 2021-01-14 09:02 +0100
Re: CD-Laufwerk mit eject öffnen Carlos Naplos <carna@onlinehome.de> - 2021-01-14 21:01 +0100
| From | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| Date | 2021-01-10 16:01 +0100 |
| Subject | CD-Laufwerk mit eject öffnen |
| Message-ID | <rtf4rb$1rm$1@gioia.aioe.org> |
Hallo
Ich versuche unter xubuntu/apache2, das CD-Laufwerk mit eject zu öffnen.
Im Terminalfenster funktioniert das mit eject.
Aber aus PHP heraus mit shell_exec reagiert das CD-Laufwerk nicht.
Meine php-Datei sieht so aus:
<?php
echo 'Output von "eject -v -i 0 cdrom":';
$output = shell_exec('eject -v -i 0 cdrom');
echo "<pre>$output</pre>";
echo 'Output von "eject -v -sT cdrom":';
$output = shell_exec('eject -v -sT cdrom');
echo "<pre>$output</pre>";
?>
Und so die Ausgabe:
Output von "eject -v -i 0 cdrom":
eject: device name is `cdrom'
eject: expanded name is `/dev/cdrom'
eject: `/dev/cdrom' is a link to `/dev/sr0'
eject: `/dev/sr0' is not mounted
eject: `/dev/sr0' is not a mount point
Output von "eject -v -sT cdrom":
eject: device name is `cdrom'
eject: expanded name is `/dev/cdrom'
eject: `/dev/cdrom' is a link to `/dev/sr0'
eject: `/dev/sr0' is not mounted
eject: `/dev/sr0' is not a mount point
eject: `/dev/sr0' is not a multipartition device
eject: toggling tray
Die letzte Zeile sag ja eigentlich, dass eject die Schublade
öffnet/schließt, aber es passiert nichts.
Hat jemand eine Idee, woran das liegen könnte.
Gruß Carlos
[toc] | [next] | [standalone]
| From | Matthias P. Würfl <matthias@wuerfl.com> |
|---|---|
| Date | 2021-01-11 12:58 -0800 |
| Message-ID | <554aa77d-345a-40b1-9b1e-e76e1b0c4d9en@googlegroups.com> |
| In reply to | #4632 |
Carlos Naplos schrieb am Sonntag, 10. Januar 2021 um 15:01:02 UTC: > Ich versuche unter xubuntu/apache2, das CD-Laufwerk mit eject zu öffnen. > Im Terminalfenster funktioniert das mit eject. > Aber aus PHP heraus mit shell_exec reagiert das CD-Laufwerk nicht. [...] > Hat jemand eine Idee, woran das liegen könnte. Ich gehe davon aus, dass der Benutzer, unter dem das PHP läuft (www-data?) keine Berechtigung auf das Laufwerk hat. Du müsstest ihn vielleicht der Gruppe "cdrom" hinzufügen. usermod -a -G cdrom www-data Alternativ bzw. wenn's das nicht war: Was passiert, wenn Du das PHP-Script als normaler Benutzer von der bash aus startest z.B. mit "php script.php" oder so? Grüße, Matthias
[toc] | [prev] | [next] | [standalone]
| From | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| Date | 2021-01-11 23:52 +0100 |
| Message-ID | <rtikrl$klc$1@gioia.aioe.org> |
| In reply to | #4633 |
Am 11.01.2021 um 21:58 schrieb Matthias P. Würfl: > Carlos Naplos schrieb am Sonntag, 10. Januar 2021 um 15:01:02 UTC: > >> Ich versuche unter xubuntu/apache2, das CD-Laufwerk mit eject zu öffnen. >> Im Terminalfenster funktioniert das mit eject. >> Aber aus PHP heraus mit shell_exec reagiert das CD-Laufwerk nicht. > [...] >> Hat jemand eine Idee, woran das liegen könnte. > > Ich gehe davon aus, dass der Benutzer, unter dem das PHP läuft (www-data?) keine Berechtigung auf das Laufwerk hat. Du müsstest ihn vielleicht der Gruppe "cdrom" hinzufügen. > > usermod -a -G cdrom www-data Super, das war's! Nach einem Reboot funktioniert es jetzt. *Vielen Dank!* p.s.: Einen Schönheitsfehler hat die Sache noch: Ich rufe das Script aus einem Menü heraus auf: <li><a href="disctoggle.php" target="_blank">Eject</a> </li> Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder automatisch geschlossen werden kann. Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des Browsers ist man schnell wieder dort, aber elegant ist das nicht.
[toc] | [prev] | [next] | [standalone]
| From | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| Date | 2021-01-12 01:32 +0100 |
| Message-ID | <rtiqme$qav$1@gioia.aioe.org> |
| In reply to | #4634 |
Am 11.01.2021 um 23:52 schrieb Carlos Naplos: > Einen Schönheitsfehler hat die Sache noch: > > Ich rufe das Script aus einem Menü heraus auf: > <li><a href="disctoggle.php" target="_blank">Eject</a> </li> > > Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab > geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder > automatisch geschlossen werden kann. > > Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des > Browsers ist man schnell wieder dort, aber elegant ist das nicht. Ich hab's gefunden: echo "<script>window.close();</script>"; schießt das Fenster wieder. Gruß CN
[toc] | [prev] | [next] | [standalone]
| From | k@rl.pflaesterer.de (Karl Pflästerer) |
|---|---|
| Date | 2021-01-12 18:38 +0100 |
| Message-ID | <m1lfcym4x0.fsf@mbp.pflaesterer.de> |
| In reply to | #4636 |
Carlos Naplos <carna@onlinehome.de> writes: > Am 11.01.2021 um 23:52 schrieb Carlos Naplos: > > >> Einen Schönheitsfehler hat die Sache noch: >> >> Ich rufe das Script aus einem Menü heraus auf: >> <li><a href="disctoggle.php" target="_blank">Eject</a> </li> >> >> Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab >> geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder automatisch >> geschlossen werden kann. >> >> Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des >> Browsers ist man schnell wieder dort, aber elegant ist das nicht. > > Ich hab's gefunden: > > echo "<script>window.close();</script>"; > > schießt das Fenster wieder. > Mache daraus doch einen Button und löse einen XHHTP Request aus. Dann öffnet sich kein Fenster (zum Beispiel). Oder fange den Click event ab. oder ...
[toc] | [prev] | [next] | [standalone]
| From | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| Date | 2021-01-13 18:53 +0100 |
| Message-ID | <rtnc2v$n2q$1@gioia.aioe.org> |
| In reply to | #4638 |
Am 12.01.2021 um 18:38 schrieb Karl Pflästerer:
> Carlos Naplos <carna@onlinehome.de> writes:
>
>> Am 11.01.2021 um 23:52 schrieb Carlos Naplos:
>>
>>
>>> Einen Schönheitsfehler hat die Sache noch:
>>>
>>> Ich rufe das Script aus einem Menü heraus auf:
>>> <li><a href="disctoggle.php" target="_blank">Eject</a> </li>
>>>
>>> Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab
>>> geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder automatisch
>>> geschlossen werden kann.
>>>
>>> Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des
>>> Browsers ist man schnell wieder dort, aber elegant ist das nicht.
>>
>> Ich hab's gefunden:
>>
>> echo "<script>window.close();</script>";
>>
>> schießt das Fenster wieder.
>>
>
> Mache daraus doch einen Button und löse einen XHHTP Request aus. Dann
> öffnet sich kein Fenster (zum Beispiel). Oder fange den Click event ab.
> oder ...
>
>
"öffnet sich kein Fenster" wäre super, aber "XHHTP Request" sagt mir nichts.
Kannst Du das kurz erklären?
Ich habe das in einem Menü:
...
<li><a href="disctoggle.php" target="_blank">Eject</a> </li>
...
disctoggle.php sieht jetzt so aus:
<?php
shell_exec('eject -v -i 0 cdrom');
shell_exec('eject -v -sT cdrom');
echo "<script>window.close();</script>";
?>
Gruß CN
[toc] | [prev] | [next] | [standalone]
| From | k@rl.pflaesterer.de (Karl Pflästerer) |
|---|---|
| Date | 2021-01-14 09:02 +0100 |
| Message-ID | <m1a6tclzeo.fsf@mbp.pflaesterer.de> |
| In reply to | #4642 |
Carlos Naplos <carna@onlinehome.de> writes:
> Am 12.01.2021 um 18:38 schrieb Karl Pflästerer:
>> Carlos Naplos <carna@onlinehome.de> writes:
>>
>>> Am 11.01.2021 um 23:52 schrieb Carlos Naplos:
>>>
>>>
>>>> Einen Schönheitsfehler hat die Sache noch:
>>>>
>>>> Ich rufe das Script aus einem Menü heraus auf:
>>>> <li><a href="disctoggle.php" target="_blank">Eject</a> </li>
>>>>
>>>> Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab
>>>> geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder automatisch
>>>> geschlossen werden kann.
>>>>
>>>> Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des
>>>> Browsers ist man schnell wieder dort, aber elegant ist das nicht.
>>>
>>> Ich hab's gefunden:
>>>
>>> echo "<script>window.close();</script>";
>>>
>>> schießt das Fenster wieder.
>>>
>>
>> Mache daraus doch einen Button und löse einen XHHTP Request aus. Dann
>> öffnet sich kein Fenster (zum Beispiel). Oder fange den Click event ab.
>> oder ...
>>
>>
> "öffnet sich kein Fenster" wäre super, aber "XHHTP Request" sagt mir nichts.
> Kannst Du das kurz erklären?
>
> Ich habe das in einem Menü:
> ...
> <li><a href="disctoggle.php" target="_blank">Eject</a> </li>
> ...
>
> disctoggle.php sieht jetzt so aus:
> <?php
> shell_exec('eject -v -i 0 cdrom');
> shell_exec('eject -v -sT cdrom');
> echo "<script>window.close();</script>";
> ?>
Zu XHHTP: Das sollte eigent XHRequest heißen.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
Zu deinem Skript. Für den Privat gebrauch ist das OK. Trotzdem solltest
du dir angewöhnen auf Fehler zu reagieren. Mit exec() bekommst du
Fehlermeldung und Status des Kommandos. Wenn Status != 0 weißt du das
was falsch war. Dann kann man darauf reagieren (anzeigen. Log schreiben,
...)
Beispiel:
php > var_dump(shell_exec('doesnot exist'));
sh: doesnot: command not found
NULL
php > var_dump(exec('doesnot exist', $res, $ret));
sh: doesnot: command not found
string(0) ""
php > var_dump($res, $ret);
array(0) {
}
int(127)
In $ret steht 127; dann weißt du, das was falsch war (nur wenn dort 0
steht, war der Call erfolgreich).
[toc] | [prev] | [next] | [standalone]
| From | Carlos Naplos <carna@onlinehome.de> |
|---|---|
| Date | 2021-01-14 21:01 +0100 |
| Message-ID | <rtq7ts$8a5$1@gioia.aioe.org> |
| In reply to | #4644 |
Am 14.01.2021 um 09:02 schrieb Karl Pflästerer:
> Carlos Naplos <carna@onlinehome.de> writes:
>
>> Am 12.01.2021 um 18:38 schrieb Karl Pflästerer:
>>> Carlos Naplos <carna@onlinehome.de> writes:
>>>
>>>> Am 11.01.2021 um 23:52 schrieb Carlos Naplos:
>>>>
>>>>
>>>>> Einen Schönheitsfehler hat die Sache noch:
>>>>>
>>>>> Ich rufe das Script aus einem Menü heraus auf:
>>>>> <li><a href="disctoggle.php" target="_blank">Eject</a> </li>
>>>>>
>>>>> Mit target="_blank" wird jedesmal ein neues Browser-Fenster bzw. -Tab
>>>>> geöffnet. Und ich weiß nicht, wie es nach getaner Arbeit wieder automatisch
>>>>> geschlossen werden kann.
>>>>>
>>>>> Mit target="_self" ist dann das Menü weg. Klar mit dem Zurück-Button des
>>>>> Browsers ist man schnell wieder dort, aber elegant ist das nicht.
>>>>
>>>> Ich hab's gefunden:
>>>>
>>>> echo "<script>window.close();</script>";
>>>>
>>>> schießt das Fenster wieder.
>>>>
>>>
>>> Mache daraus doch einen Button und löse einen XHHTP Request aus. Dann
>>> öffnet sich kein Fenster (zum Beispiel). Oder fange den Click event ab.
>>> oder ...
>>>
>>>
>> "öffnet sich kein Fenster" wäre super, aber "XHHTP Request" sagt mir nichts.
>> Kannst Du das kurz erklären?
>>
>> Ich habe das in einem Menü:
>> ...
>> <li><a href="disctoggle.php" target="_blank">Eject</a> </li>
>> ...
>>
>> disctoggle.php sieht jetzt so aus:
>> <?php
>> shell_exec('eject -v -i 0 cdrom');
>> shell_exec('eject -v -sT cdrom');
>> echo "<script>window.close();</script>";
>> ?>
>
> Zu XHHTP: Das sollte eigent XHRequest heißen.
> https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
>
> Zu deinem Skript. Für den Privat gebrauch ist das OK. Trotzdem solltest
> du dir angewöhnen auf Fehler zu reagieren. Mit exec() bekommst du
> Fehlermeldung und Status des Kommandos. Wenn Status != 0 weißt du das
> was falsch war. Dann kann man darauf reagieren (anzeigen. Log schreiben,
> ...)
>
> Beispiel:
>
> php > var_dump(shell_exec('doesnot exist'));
> sh: doesnot: command not found
> NULL
> php > var_dump(exec('doesnot exist', $res, $ret));
> sh: doesnot: command not found
> string(0) ""
> php > var_dump($res, $ret);
> array(0) {
> }
> int(127)
>
>
> In $ret steht 127; dann weißt du, das was falsch war (nur wenn dort 0
> steht, war der Call erfolgreich).
>
Ja, das ist rein für den privaten Gebrauch. Um mal selbst so was mit php
und sql-Datenbank zu programmieren.
Ich habe mich sowieso schon gefragt, warum es da zwei Funktionen,
shell_exec und exec gibt.
Die Sache mit XMLHttpRequest ist mir zu kompliziert.
Aber danke für die Unterstützung.
Gruß CN
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.lang.php
csiph-web