So scannen Sie in PHP

8

Ich möchte aus meinem PHP-Skript scannen. Ich benutze Ubuntu 14.04 LTS, einen Brother MFC-7840W Scanner (im Büro) und einen Brother MFC-9840CDW (zu Hause). Ich kann vom Terminal und PHP scannen, wenn einer der Scanner als Netzwerk-Scanner an den Computer angeschlossen ist. Ich kann jedoch nicht von PHP aus scannen, wenn einer der Scanner als USB-Scanner an den Computer angeschlossen ist (ich kann immer noch vom Terminal aus scannen).

Warum kann mein PHP-Skript nicht auf die USB-Scanner zugreifen, aber $ USER kann?

Ich begann diese Frage bei der Arbeit, aber jetzt bin ich zu Hause, also werde ich meinen Versuch zeigen, auf den Brother MFC-9840CDW USB-Scanner von meinem PHP-Skript zuzugreifen.

Hier ist der Ausschnitt des PHP-Codes, den ich zum Scannen verwende:

%Vor%

Das PHP-Skript funktioniert für die Netzwerk-Scanner, funktioniert aber nicht für die USB-Scanner.
Wenn ich einen der beiden USB-Scanner (derzeit MFC-9840CDW) auswähle und das Skript ausführe, wird in der Datei /var/log/apache2/error.log Folgendes angezeigt:

%Vor%

Es stellt sich die Frage: Ist das Gerät brother3:bus6;dev1 vorhanden?

Hier ist, was scanimage --list-devices anzeigt, wenn es im Terminal zu Hause eingegeben wird (wo MFC-9840CDW ist):

%Vor%

Um zu demonstrieren, dass die USB-Scanner für $ USER arbeiten, gebe ich den folgenden Befehl in das Terminal ein:

%Vor%

was zeigt:

%Vor%

Um zu demonstrieren, dass Benutzer www-Daten nicht auf die USB-Scanner zugreifen können, gebe ich den folgenden Befehl in das Terminal ein:

%Vor%

was zeigt:

%Vor%     
Arya 11.12.2014, 23:35
quelle

1 Antwort

3

PHP kann nicht auf den USB-Scanner zugreifen, weil WWW-Daten (der Benutzer, der das PHP-Skript ausführt) kein Mitglied der Gruppe sind, zu der der USB-Scanner gehört. Fügen Sie den Benutzer www-data zu der Gruppe hinzu, zu der der USB-Scanner gehört.

Um die Gruppe zu finden, zu der der USB-Scanner gehört, muss der Name des USB-Scanners bekannt sein. Um den Namen des USB-Scanners zu finden, geben Sie den folgenden Befehl ein:

%Vor%

zeigt (neben anderen Zeilen):

%Vor%

Suchen Sie dann die Gruppe, zu der der USB-Scanner gehört, indem Sie den folgenden Befehl eingeben:

%Vor%

was zeigt:

%Vor%

Die Gruppe, zu der der USB-Scanner gehört, ist lp . Der Grund dafür, dass $ USER auf den USB-Scanner zugreifen kann, ist, dass $ USER ein Mitglied der Gruppe lp ist, www-data nicht. Dies wird demonstriert durch Eingabe des Befehls:

%Vor%

was zeigt:

%Vor%

Fügen Sie den Benutzer www-data zur Gruppe lp hinzu, indem Sie folgenden Befehl eingeben:

%Vor%

Testen Sie das Ergebnis erneut, indem Sie grep ^lp /etc/group eingeben, was nun Folgendes anzeigt:

%Vor%

Starten Sie dann Apache neu, um sicherzustellen, dass die obigen Aktionen registriert sind:

%Vor%

Testen Sie anschließend, ob www-Daten vom Terminal aus auf den USB-Scanner zugreifen können:

%Vor%

was zeigt:

%Vor%

Führen Sie dann das ursprüngliche PHP-Skript erneut aus, um zu sehen, ob es auf die USB-Scanner zugreifen und ein Dokument scannen kann ...

Erfolg!

    
Arya 14.12.2014, 06:57
quelle

Tags und Links