I am trying to print generated forms / receipts through PHP (the printers will be installed on the server, I am not attempting to print to a user's local printer). I have decided to try the following methodology:
IN PHP:
- Generate a PDF file and save it on the server.
- Call a perl script to print said PDF file.
IN perl:
- Use
system()
to "open" Reader and print the given PDF silently.
What works:
- I can generate PDFs in PHP.
- I can call a perl script.
- If the script has errors, they report to the browser window. ie: If I purposely change file paths it fails, and reports the appropriate reason.
- functions such as
printf
seem to work fine as the output displays in the browser. - The exact same perl script (with the "non-functioning" line mentioned below) works properly when executed from the command line or the IDE.
What doesn't work:
- In perl:
system('"C:\\Program Files (x86)\\Adobe\\Reader 10.0\\Reader\\AcroRd32.exe" /N /T "C:\\test.pdf" 0-XEROX');
What happens:
- NOTHING! I get no errors. It just flat out refuses to open Adobe Reader. All code below this line seems to run fine. It's like the function is being ignored. I am at a loss as to why, but I did try a few things.
What I've tried:
- Changed permissions of the AcroRd32.exe to
Everyone - Full Control
. - Output the
$?
after thesystem()
call. It is1
, but I don't know what1
means in this case. - Verified that there are no
disable_functions
listed in php (though I think this is unrelated asshell_exec
seems to be working, since some of the perl code is ran). - Various other configurations that at least got me to the point where I can confirm that PHP is in fact calling the perl script, it just isn't running the
system()
call.
Other info:
- Apache 2.2.1.7
- PHP 5.35
- Perl 5.12.3 built for MSWin32-x86-multi-thread
- WampServer 2.1
I'm at a loss here, and while it seems like this is an Apache / permissions problem, I cannot be sure. My experience with Apache is limited, and most of what I find online is linux commands that don't work in my environment.