Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4632 > unrolled thread

CD-Laufwerk mit eject öffnen

Started byCarlos Naplos <carna@onlinehome.de>
First post2021-01-10 16:01 +0100
Last post2021-01-14 21:01 +0100
Articles 8 — 3 participants

Back to article view | Back to de.comp.lang.php


Contents

  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

#4632 — CD-Laufwerk mit eject öffnen

FromCarlos Naplos <carna@onlinehome.de>
Date2021-01-10 16:01 +0100
SubjectCD-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]


#4633

FromMatthias P. Würfl <matthias@wuerfl.com>
Date2021-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]


#4634

FromCarlos Naplos <carna@onlinehome.de>
Date2021-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]


#4636

FromCarlos Naplos <carna@onlinehome.de>
Date2021-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]


#4638

Fromk@rl.pflaesterer.de (Karl Pflästerer)
Date2021-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]


#4642

FromCarlos Naplos <carna@onlinehome.de>
Date2021-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]


#4644

Fromk@rl.pflaesterer.de (Karl Pflästerer)
Date2021-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]


#4645

FromCarlos Naplos <carna@onlinehome.de>
Date2021-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