资源说明:Allows you to use your Linux install as a web based scanner server thus allowing you to scan with any web enabled device; Now supports server side printing! (As of 1.4.11)
PHP Scanner Server
by pqwoerituytrueiwoq (at) ubuntuforums.org
Based on Linux Scanner Server 1.2 Beta
by PHiLLIP KLiEWER (http://scannerserver.online02.com)
Released under the GPL 2.0
Last Update: 6/17/2020 (Month/Day/Year)
For Version: 1.7-19_dev
Change Log:
https://github.com/GM-Script-Writer-62850/PHP-Scanner-Server/wiki/Change-Log
PHP Linux Scanner Server is a PHP web application that allows you to share multiple scanners (supported by SANE) over a network.
The following packages need to be installed:
* imagemagick (6.5.9+) - For image conversion
* sane-utils - For accessing scanners
* usbutils - For updating the device path of scanners using libusb
* apache2 - A web server
* libapache2-mod-php - Ubuntu 16.04 + | Enables PHP to run under apache2
* coreutils - For various purposes, not having this would probably result in an unusable system
* php5 - For running php
* php - Ubuntu 16.04 + | For running php
* php5-json - For storing/transferring/parsing data (If this package is not available, it may already be part of php5)
* php-json - Ubuntu 16.04 + | For storing/transferring/parsing data (If this package is not available, it may already be part of php5)
+ php5-curl - For uploading scans to imgur.com
+ php-curl - Ubuntu 16.04 + | For uploading scans to imgur.com
+ tesseract-ocr - For image to text conversion
+ tar - For downloading a copy of PHP Linux Scanner Server in .tar.lzma format (link in footer)
+ zip - For downloading a compressed scan
+ php-fpdf - For downloading a pdf file
+ libpaper-utils - For detecting paper sizes
+ sed - Used in the fall-back method of detecting tesseract languages
+ grep - Used in the fall-back method of detecting tesseract languages
_ hplip - Required for HP scanner support
_ cups - Required if you want to use the printer service
_ php5-cli - For running php from command line
_ php-cli - Ubuntu 16.04 + | For running php from command line
_ curl - For making url request via command line through the network (alternative to php5-cli)
_ tesseract-ocr-all - All Language packages for tesseract
_ tesseract-ocr-* - Language packages for tesseract
_ fortune - For displaying fortunes in the debug console
_ cowsay - For wrapping fortunes in ASCII art
* Mandatory
+ Recommended for full functionality
_ Optional or required for full functionality
Some of these will likely already be installed, some newer distros (ubuntu 13.10) will require php5-json
Starting with Ubuntu 16.04 libapache2-mod-php is not pulled by php, php5 has been changed to php7.0, there is a php meta package
sudo apt-get install imagemagick sane-utils usbutils apache2 php libapache2-mod-php php-json php-curl php-fpdf tesseract-ocr tar zip libpaper-utils grep sed coreutils
Permissions:
The user www-data needs write permissions to the following folders
./scans/file
./scans/thumb
./config
./config/parallel
Security Notes:
Anyone with access to the scanner can view all your scans
Do not give www-data more permission than needed, there may be security holes (If you find any let me know, they are bugs)
Supported Browsers:
Firefox (recommended)
http://www.mozilla.org/en-US/firefox/all.html
Google Chrome
https://www.google.com/chrome
Chromium
http://www.chromium.org/getting-involved/dev-channel
Safari
http://www.apple.com/safari/download/
Opera (NOT Opera Mini)
http://www.opera.com/browser/
Microsoft Edge
https://www.microsoft.com/en-us/edge
IE 11
https://www.microsoft.com/en-us/download/details.aspx?id=41628
Enabling Auto-Deletion of old scans:
cleaner.php: Old scan auto-deletion tool.
http://ubuntuforums.org/showpost.php?p=10294835&postcount=37
Basically run this command
crontab -e
then add this line (if you need root here use `sudo crontab -e`)
*/5 * * * * php -f /path/to/cleaner.php
or this line (Will not require root unless you want it to work when you are not loged in)
*/5 * * * * curl http://localhost/path/to/cleaner.php
It will Check every 5 minutes for scans older than 1 day (86400 seconds value
in cleaner.php) and deletes them.
Frequently asked questions/issues:
Why is there a 404 error while trying to display a 404 error
Apparently you are running the server in a sub-folder on the domain, you will need to edit .htaccess with the full path relative to the root document
Basically if you put the server in /var/www/scanner/ you need to put /scanner before /inc in the .htaccess file
Sometimes when I download a large file I get nothing (a 0 byte file)
You will need to increase the max memory PHP can use,
To do this run this command (path varies depending on php version, there are two formats):
cat /etc/php5/apache2/php.ini -n| grep memory_limit
cat /etc/php/7.4/apache2/php.ini -n| grep memory_limit
You will see something like this:
407 memory_limit = 128M
407 is the line number the setting is on
We need to change the 128 to a higher number
Open up /etc/php5/apache2/php.ini as root and change the number
I am not sure how high you will need it, I have had issues with files under 60MB hitting the 128MB limit (total usage was under 45% of the limit)
I set mine to 1024 (1 GiB) if you need more memory than you have ram be sure your swap partition is large enough to cover the overdraw
The debug console shows a error when it runs convert, something about 'convert-im6.q16: no images defined'
This can happen when high res images or PDF files, please take a look at this:
https://askubuntu.com/questions/1181762/imagemagickconvert-im6-q16-no-images-defined
What is bug 13, it is mentioned in the debug console
https://github.com/GM-Script-Writer-62850/PHP-Scanner-Server/issues/13
Why don't you have a .deb, .rpm, etc file I can install
This more like an addon than a program so I am not sure if one of those would be appropriate, I have written bash
scripts to install and update this, you can find them on the Downloads page in the Wiki
https://github.com/GM-Script-Writer-62850/PHP-Scanner-Server/wiki/Downloads
The brightness and contrast options do not work on lucid lynx.
This is because lucid has ImageMagick 6.5.7-8 and the brightness-contrast option was added in version 6.5.9
64Bit:
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086531/+files/libmagickcore3_6.6.2.6-1ubuntu1.1_amd64.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086531/+files/libmagickwand3_6.6.2.6-1ubuntu1.1_amd64.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086531/+files/libmagick%2B%2B3_6.6.2.6-1ubuntu1.1_amd64.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086531/+files/imagemagick_6.6.2.6-1ubuntu1.1_amd64.deb
32Bit:
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086533/+files/libmagickcore3_6.6.2.6-1ubuntu1.1_i386.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086533/+files/libmagickwand3_6.6.2.6-1ubuntu1.1_i386.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086533/+files/libmagick%2B%2B3_6.6.2.6-1ubuntu1.1_i386.deb
https://launchpad.net/~ubuntu-security/+archive/ppa/+buildjob/2086533/+files/imagemagick_6.6.2.6-1ubuntu1.1_i386.deb
Why should I enable auto delete?
So your Hard Drive does not end up full of scans
What does EOL stand for
End Of Life, meaning it will no longer receive updates
Every time I load a page it is blank.
Somehow there is an error somewhere, check your apache error log
for me the file was located at
/var/log/apache2/error.log
You can set php to show the error in the browser by editing your php.ini
for me it was located in
/etc/php5/apache2/php.ini
then find this line
display_errors = Off
and set it to On (it was on line 531 for me)
at this point apache will need a reload (sudo service apache2 reload)
If the error was not caused by you not reading the instructions please file a bug report
The conversion to text was very poor/blank
Try making the image larger the text is probably too small for tesseract-ocr to read
How can I change the low disk space warning threshold
It is set on line 3 of index.php
How can I turn the auto update checker off
It is set on line 6 of index.php
How can I change the time files are kept with auto-delete enabled
Open cleaner.php and change the 86400 on line 2 to a different number (86400 is one day in seconds)
You can use math there and put 86400*7 to make it a week
I see my scanner with the command "scanimage -L" but it is not being detected
This is a permissions issue (and a royal pita)
http://127.0.0.1/index.php?page=Access%20Enabler (link works after installing)
http://jhansonxi.blogspot.com/2010/10/scanner-access-enabler.html
If that site goes the access enabler is included with this (1.2 lacks a desktop file)
scanner-access-enabler-1.1.tar.bz2 (http://www.mediafire.com/?86e6ykeueodu7tl)
scanner-access-enabler-1.2.tar.bz2 (http://www.mediafire.com/?p1plimo2yf31kl3)
scanner-access-enabler-1.4.tar.bz2 (http://www.mediafire.com/?4r1aw9ix9ayb0u0)
Why can't I change the orientation on the scan page
because the selected paper size will only fit in the scanner one way
Why is the pdf download (single page) not working I keep getting a file with a error in it
The script assumes fpdf.php is located in /usr/share/php/fpdf/ this is set on line 2 of download.php
Why is it hanging up when I search for printers
It assumes all found printers are connected to the computer, lpoptions seems to hang when the printer it is looking for is not there
How do I increase the max upload size for PDFs?
You need to edit your php.ini file
for me it was located in
/etc/php5/apache2/php.ini
You will need to change the post_max_size and upload_max_filesize
For me they were on lines 673 and 805
If post_max_size is the lower value it will limit the upload size, this value should in practice be the larger value by just a little
How can I make a network share for scans
All raw scans are saved to scans/file/
You can create a READ ONLY share
It can be relocated using /etc/fstab and the bind option like so:
/path/to/share /path/to/scans/file bind defaults,bind 0 0
Can I archive old scans
There is a line commented out in cleaner.php that will give you this feature.
The upload pritner has a very small file size limit, why?
PHP has a config.ini file, located at /etc/php/PHP_VERSION_NUMBER/apache2/php.ini
It has 2 setting relavent upload_max_filesize and post_max_size
upload_max_filesize is the what limits it, however it has a max value set by post_max_size
Internal Configuration Options:
Free Space Warning
This puts a warning on the page if you are low on disk space
low is defined on line 2 of config.ini
Fortunes
This setting is on line 3 of config.ini
This setting is ignored if the program fortune is not installed
If it is not working and fortune is installed you may need to update line 201 of index.php with the correct path
Extra Scanners
This is a developer tool used for simulating scanners
This is just for testing the search for scanners feature
This is set on line 4 of config.ini
Check For Updates
Every 24 hours the scanner will check for updates, This is checked on page load
It only checks the Internet if the last check was over 24 hours ago
This is set on line 5 of config.ini
Enable Login
There are 2 ways, one is pretty and one is not, but the not so pretty one is by far more secure
Look under apache tricks for the secure one
The pretty one is enabled on line 6 of config.ini
Session Duration
This defines the maximum duration a user stays logged in
This is set on line 7 of config.ini
Default Theme
The default theme is set on line 8 of config.ini, you can get the theme code on the 'Configure' page
by clicking the 'Save' button under 'Color Scheme'
Dark Picker
Tells the page whether or not to use the dark color picker theme by default
This is set on line 9 of config.ini
Ruler Increment
This tells the ruler what measurement system to use
This is set on line 10 of config.ini
Time Zone
This overrides the system time zone that is set in php.ini as well as auto detect
This may not be of use for PHP versions older than 5.1
This is set on line 11 of config.ini
Printer
This option enables the server side printing service, the printer must be configured in cups
This allows one to easily bypass all the crap involved with sharing printers and all the cross-platform nightmares involved!
Setting this option to 0 disables this feature
Setting this option to 1 enables it ONLY for printing documents made with the scanner software
Setting this option to 2 enables it ONLY for uploaded content via the Printer page
Setting this option to 3 enables it for both uploading documents and printing scanned documents
This is set on line 12 of config.ini
ReplacePrinter
This allows you to disable the client side printing button in favor of the intigrrated one
This option is ignored if the integrated printer is disabled
This is set on line 13 of config.ini
BusterPrintBug
Debian Buster has a issue with printing PDF files under some conditions
Setting this option to 0 leaves mitigations disabled
Setting this option to 1 converts the PDF to a ps file before printing using the pdf2ps command, this may reduce quality, but is faster than 2
Setting this option to 2-72 reformats the PDF using the convert command with 72 DPI (pdf -> pdf)
Setting this option above 72 will use that number for the DPI setting, high values may hit a the php ram limit or ImageMagick's max dimensions
This is set on line 14 of config.ini
HomePage
This option allows one to change the home page within the scanner server
While is supports a vast number of pages, the only options I consider useful are Scan and Printer
This is set on line 15 of config.ini
ShowRawFormat
This option allows one to show or hide the scanner option to change the raw scan format (pnm or tiff)
By default this option is hidden for the sake of simplicity
This is set on line 16 of config.ini
RawScanFormat
This option allows one to change the default raw format regardless of the ShowRawFormat setting
There is no real reason to pick one over the other, unless you one or the other does not work
See Issue #23: https://github.com/GM-Script-Writer-62850/PHP-Scanner-Server/issues/23
Setting this option to 0 makes the default format pnm
Setting this option to 1 makes the default format tiff
This is set on line 17 of config.ini
Credit where credit is due:
PHiLLIP KLiEWER
Original CGI script
pqwoerituytrueiwoq (at) ubuntuforums.org AKA GM-Script-Writer-62850 (at) github.com
Conversion/upgrade/security/fixes/cleanup/upgrades
jhansonxi (at) ubuntuforums.org
Original CGI cleanup prior to conversion and scanner-access-enabler-*.tar.bz2
Everaldo Coelho
Icons (Crystal Clear set)
ajaxload.info
Loading bar animation
odyniec (at) odyniec.net
imgAreaSelect 0.9.10
Andy Prevost, Marcus Bointon, and Jim Jagielski
phpmailer 5.2.6
openiconlibrary.sourceforge.net
Powered by Linux image
Stefan Petre
ColorPicker (www.eyecon.ro/colorpicker/)
Does not get full credit, it had lots of issues
jamesfu
Proof reading (see issue #18)
There are a few others, there are comments in the source code for them
Installation Notes:
Extract files to /var/www/html (or wherever your web pages are visible from)
Given you already have php installed you can go to http://127.0.0.1 and it will tell you forgot to do as you try to use it
Install the dependencies (you may use curl instead of php5-cli if you do not want auto delete you do not need either)
sudo apt-get install tar apache2 php php-cli imagemagick sane-utils php-fpdf
Add www-data to the lp group
sudo adduser www-data lp
Restart service to apply the above command
sudo service apache2 restart
Be sure to update imagemagick on Lucid Lynx (Ubuntu 10.04) and CentOS
If you cloned the git repo you will need to create some folders, git does not allow empty folders
sudo mkdir -p /var/www/html/scans/{file,thumb}
sudo mkdir -p /var/www/html/config/parallel
Make sure www-data can write files to the scans, config, and parallel folders
sudo chown www-data /var/www/html/scans/{file,thumb}
sudo chown -R www-data /var/www/html/config
You may chmod them to 666 if you prefer
These command will give you your scanner's URL as a IP address (127.0.0.1 only works on the current system)
ifconfig | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/http\:\/\/\1/p'
ifconfig | sed -n 's/.*inet \([0-9.]\+\)\s.*/http\:\/\/\1/p'
ip address show | grep 'inet ' | cut -f1 -d'/'| sed 's/inet /http:\/\//'
This command will give you a easy to remember URL for the scanner (I remember this not working on Windows XP clients)
echo http://$(uname -n).local/
Be sure to check http://www.canyouseeme.org/ so you know if people can use your scanner on the Internet, I suggest using a firewall to prevent this, or putting a password on it.
I recommended enabling .htaccess
See next section, this will enable faster data transfer over the network, fancy error pages, fancy Index Of pages, cache control, and proper content types
If you don't have a /etc/apache2/mods-enabled/headers.load file run this command, this enables catch control and defines mime types via .htaccess
sudo ln -s ../mods-available/headers.load /etc/apache2/mods-enabled/ && sudo service apache2 restart
Apache Tricks:
Note
This part was written for a older version of apache2
These 2 lines:
Order allow,deny
allow from all
Have been replaced with this line:
Require all granted
In the current version
Enabling .htaccess
open /etc/apache2/sites-available/default
locate this:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
you will see "AllowOverride None" change "None" to "All"
make the change and save it
now reload apache
sudo service apache2 reload
Password protecting your scanner
using .htaccess
be sure .htaccess is enabled (see above)
make a file called .htaccess in a folder visible over the network
put this in it
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
now me need to make a login (Bob is the user name)
sudo htpasswd -c /var/www/.htpasswd Bob
now you will have to login to access /var/www
using /etc/apache2/sites-available/default
open /etc/apache2/sites-available/default
locate this:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
make it look something like this:
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthName "Please Login"
AuthType Basic
AuthUserFile /etc/apache2/users
AuthGroupFile /dev/null
require valid-user
now you need to make a login with this command
sudo htpasswd -c /etc/apache2/users Bob
now you need to reload apache
sudo service apache2 reload
Setting a server name
Open /etc/apache2/sites-available/default
Add a new line at the top of the file
add something like this
ServerName www.scanner.com
www.scanner.com and be anything you want
now run this command
sudo service apache2 reload
now apache will not fuss about there not being a server name
Running apache on a another port
open /etc/apache2/ports.conf
notice theses 2 lines
NameVirtualHost *:80
Listen 80
those tell it to use port 80
you can add more or change them
for the sake of example we will use port 81 you may use any port number that is not in use (run a port scan to see what is in use)
so we will add these to lines
NameVirtualHost *:81
Listen 81
now we need to set a path to run on this port
open /etc/apache2/sites-available/default
go to the bottom of the file and add this
DocumentRoot /foo/bar # /foo/bar could be /var/www or /home/bob/public_html for example
Options FollowSymLinks # follows symbolic links
AllowOverride All # allows use of .htaccess
Order allow,deny #allows everyone to access it via browser
allow from all
now save and run this command
sudo service apache2 reload
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。
English
