![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Я не прогрммировал на perl. Мне нужно внедрить платёжную систему E-Gold на свой сайт. С официального сайта компании взял perl-скрипт для выполнения выплат. Когда попробовал загрузить на сервер и выполнить, сервер выдаёт ошибку:
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. -------------------------------------------------------------------------------- Apache/1.3.33 Server at forexguide.ru Port 80 В логе файла ошибок пишет следующее: [Fri Apr 6 00:32:13 2007] [error] [client 82.151.112.33] Premature end of script headers: /pub/home/forexguide/cgi-bin/payment.cgi [Fri Apr 6 00:33:15 2007] [error] [client 82.151.112.33] Premature end of script headers: /pub/home/forexguide/cgi-bin/payment.pl Я уже и расширения менял. Исходник скрипта вот: #!/usr/bin/perl # # perl script to preview a spend # from maintenance release e-gold system # version 1.0 # free for use, modification, redistribution # # #Disclaimer #The Author [e-gold Ltd.] accepts no #responsibility for damages to persons, property or data incurred #through the use of this script(s). To the maximum extent permitted #by law, in no event shall the Author [e-gold Ltd.] be #liable for any damages whatsoever (including, without limitation, #damages for loss of business profits, business interruption, loss of #business information, or other pecuniary loss) arising out of the use #or inability to use this software, even if the Author has been advised #of the possibility of such damages. # #This product is supplied as-is, with no warranties express or implied. #Use this software at your own risk. # if ($#ARGV < 4) { &command_help; } # pick up account number we will be spending from... $accountfrom = $ARGV[0]; shift; # pick up account number we will be spending to... $accountto = $ARGV[0]; shift; # pick up amount $amount = $ARGV[0]; shift; # pick up units $units = uc($ARGV[0]); shift; $unitsok = 0; if(index($units,"USD") == 0){ $units = 1; $unitsok = 1; } if(index($units,"OZ") == 0){ $units = 9999; $unitsok = 1; } if(index($units,"G") == 0){ $units = 8888; $unitsok = 1; } if(index($units,"CAD") == 0){ $units = 2; $unitsok = 1; } if(index($units,"FFR") == 0){ $units = 33; $unitsok = 1; } if(index($units,"CHF") == 0){ $units = 41; $unitsok = 1; } if(index($units,"GBP") == 0){ $units = 44; $unitsok = 1; } if(index($units,"DEM") == 0){ $units = 49; $unitsok = 1; } if(index($units,"AUD") == 0){ $units = 61; $unitsok = 1; } if(index($units,"JPY") == 0){ $units = 81; $unitsok = 1; } if($unitsok == 0) { die "$units is Invalid, choose oz, g, usd, gbp, aud, jpy, dem, cad, ffr, chr"; } # pick up e-metal type $metal = uc($ARGV[0]); shift; $metalok = 0; if(index($metal,"GOLD") == 0){ $metal = "Gold"; $metalok = 1; } if(index($metal,"SILVER") == 0){ $metal = "Silver"; $metalok = 1; } if(index($metal,"PLATINUM") == 0){ $metal = "Platinum"; $metalok = 1; } if(index($metal,"PALLADIUM") == 0){ $metal = "Palladium"; $metalok = 1; } if($metalok == 0) { die "$metal is invalid, choose gold, silver, platinum, or palladium"; } sub command_help { print "Usage: $0 from to amount units metal\n"; print " units can be one of oz, g, usd, aud, cad, dem, gbp, jpy, chf, ffr\n"; print " metal can be one of gold, silver, platinum, palladium\n"; print "\nexample:\n"; print "$0 101574 100998 1 usd gold\n"; print "to preview a spend of 1 US dollar equivalent of gold from\n"; print " account 101574 to account 100998\n"; exit 1; } # prompt user for password print "\nPassphrase for $accountfrom?"; if ( system('stty -echo') != 0) { die "Error setting terminal to not echo\n"; } $pp = <STDIN>; chop($pp); system('stty echo'); print "\n"; #build up the arguments for the preview command $curlargs = "Payee_Account=$accountto"; $curlargs .= "&Amount=$amount"; $curlargs .= "&PAY_IN=$units"; $curlargs .= "&WORTH_OF=$metal"; $curlargs .= "&Memo=automatic spend"; $curlargs .= "&PassPhrase=$pp"; $curlargs .= "&AccountID=$accountfrom"; # print "\n$curlargs\n"; $sysstring = "curl -s -d "; $sysstring .= '"'; $sysstring .= $curlargs; $sysstring .= '"'; $sysstring .= " https://www.e-gold.com/acct/verify.asp"; #print $sysstring; # read everything into one buffer undef $/; open(foo, "$sysstring|"); while(<foo>){ # pull out the hidden fields...the pattern starts with "hidden name=" and # ends with ">" while( /hidden name=(.*?)>/gs ) { # see if there was some kind of error if(index($1, "ERROR") == 0) { $errstring = $1; $errstring =~ ( /value="(.*)"/ ); print "Error on preview is: $1\n"; exit -1; } # print out the information we care about from the preview if(index($1, "ACTUAL_PAYMENT_OUNCES") == 0) { $ozstring = $1; $ozstring =~ ( /value="(.*)"/ ); print "Successful Preview.\n"; print "Weight of this payment would be: $1 oz.\n"; } } } close foo; # all done print "\n"; Я даже точку в конце пробовал ставить. Подскажите, что нужно исправить, от чего такая ошибка. Скрипт же должен быть рабочим, или это зависет от хостинга? Заранее благодарен за помощь. |
|||
|
||||
everyone |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: нет Всего: 4 |
Это консольное, а не серверное приложение.
Запускается из командной строки: ./<scriptname>.pl или perl <scriptname>.pl Я не думаю, что это поможет вам внедрить E-Gold в ваш сайт. --------------------
Что написал, то написал (Пилат) |
|||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Т.е. получается, что его нельзя вообще запустить на веб-сервере. А если через cron?
|
|||
|
||||
everyone |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: нет Всего: 4 |
Не знаю, причём здесь Cron. Чтобы интегрировать это в сайт, именно интегрировать, можно было бы переписать это в модуль.
Если нужно, чтобы приложение работало с сервера, можно сделать CGI интерфейс. Но опять же проблема программирования, если вы с этим совсем не знакомы. Это сообщение отредактировал(а) everyone - 13.4.2007, 17:36 --------------------
Что написал, то написал (Пилат) |
|||
|
||||
Kuznec |
|
|||
В поиске Профиль Группа: Участник Сообщений: 43 Регистрация: 13.4.2007 Где: КМА Репутация: нет Всего: нет |
Да вот и вся проблема, я начал было изучать perl, но перешёл на PHP, его возможности меня устраивали до сих пор, пока не столкнулся с проблеммой оплаты. А perl теперь не прочь изучить, но это время. А может, everyone, Вы мне с этим сможете помочь? Конечно, не бесплатно, но может я чем-то смогу помочь: или деньгами или идеями, можно рассмотреть любые варианты.
|
|||
|
||||
everyone |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: нет Всего: 4 |
Давайте в приват, объём работы на глаз трудно оценить, но я пока не вижу, что за это можно взять действительно деньги)
--------------------
Что написал, то написал (Пилат) |
|||
|
||||
everyone |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 24.3.2004 Репутация: нет Всего: 4 |
--------------------
Что написал, то написал (Пилат) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |