2011-02-10 3 views
4

PHP를 사용하여 네트워크 인쇄기에 페이지를 인쇄 할 수 없습니다.
그러나 로컬 프린터 인 경우 작동합니다.PHP를 사용하여 네트워크 프린터로 직접 인쇄

//$handle = printer_open("Send To OneNote 2007"); ///This Works 

$handle = printer_open('\\\\192.168.0.8\\Canon MF4320-4350'); 
printer_set_option($handle, PRINTER_MODE, "RAW"); 
printer_write($handle, "TEXT To print"); 
printer_close($handle); 

그것은 오류를

경고 표시 : printer_write() [function.printer 쓰기]를 내가 php_printer.dll를 설치하고 php.ini의 다음을 활성화 한 코드입니다 : E의 PrinterJob에 [5]를 할당 할 수 없습니다 : \ 서버 \ XAMPP \ htdocs를 \ 키오스크 \ 관리 \ print.php 줄에 16

답변

1

4 \ 또는 '의 3과 중 하나 "의를 사용해보십시오. 예 :

$handle = printer_open("\\\\192.168.0.8\\Canon MF4320-4350"); 
// or 
$handle = printer_open('\\\192.168.0.8\Canon MF4320-4350'); 

또한 IP가 아닌 도메인 이름을 사용해보십시오 (예 : computer-name 또는 full.address.example.com).

+0

모든 방법을 시도했으나 쓸모가 없습니다. 답변을 주셔서 감사합니다. –

+0

흠, php.net 매뉴얼 페이지에 대한 의견은 그 방법으로 올바르게 작동한다고 제안하는 것처럼 이상합니다. –

0

단지 그 문자열을 보면, 역 슬래시가 잘못해서 이스케이프 처리되어 발생하는 것처럼 느껴집니다.

디버깅 정보 : 직접 printer_open()이 아닌 변수에 네트워크 주소를 설정하십시오. 그런 다음 또는 이와 유사한 값을 사용하여 값을 표시하십시오.

<?php 
    $addr = '\\\\192.168.0.8\\Canon MF4320-4350'; 
    print $addr; 
    printer_open($addr); 
    ... 
?> 

이 당신이 더 중요한 것은 잘못된 것, 그리고 무엇을보고 도움이 될 수 있습니다 당신이 사용하고있는 문자열의 값을 볼 수 있습니다, 당신이 그것을 해결하는 방법을 확인하는 데 도움이.

희망이 있습니다.

7

명령 줄 PHP (CLI)를 사용하면 네트워크 프린터로 인쇄 할 수 있습니다. 귀하의 $ addr은 그때까지 정확합니다.

PHP를 Apache와 결합 할 때이 문제가 발생합니다. Windows에서는 PHP 스크립트가 SYSTEM 사용자로 실행됩니다. 보안 문제로 인해 모든 네트워크 리소스가 SYSTEM에 표시되지 않습니다.

이 문제를 해결하려면 관리자 권한 (또는 적어도 네트워크 리소스 표시 여부)으로 새 사용자를 만드십시오. Windows에서 서비스로 Apache를 실행하는 경우 Apache Service Monitor에서 SERVICE 버튼을 클릭하십시오. Apache 2.2에서 속성을 마우스 오른쪽 버튼으로 클릭합니다. 로그인 탭에서 사용자를 SYSTEM에서 새로 생성 된 사용자 계정으로 변경하십시오. Apache를 다시 시작하십시오. 이제 PHP 스크립트를 실행하여 네트워크 프린터로 인쇄 할 수 있어야합니다.

+0

지금은 잘 들리는 군. – Paul

관련 문제