Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > amfphp нет подключения


Автор: CPlusPlusFAN 7.8.2011, 02:26
Здравствуйте, дамы и господа.

Есть сервак на локалхосте (пхп), есть клиент на флеше. Моя задача - вызвать удалённый метод на сервере. В качестве примера - TestService.auth. Класс сервиса:
Код

<?php
class TestService
{
    
    private var $login;
    private var $password;
    
    public function __constructor()
    {
        $this->login = "user";
        $this->password = "123456";
    }
    
    
    public function auth($login, $password)
    {
        if ($file = fopen(dirname(__FILE__) . "/out.txt", "w"))
        {
            fwrite($file, implode(", ", array($login, $password)));
            fclose($file);
        }
        
        
        if ($this->login !== $login) return array("errno" => 1, "error" => "Invalid login");
        if ($this->password !== $password) return array("errno" => 2, "error" => "Invalid password");
        return array("success" => true);
    }
    
}
?>


В браузере проверял - класс рабочий. Далее, файл в кодировке utf8, имя совпадает с названием класса. Версия amfphp - 1.9, версия пхп - 5.3.6, версия апача - 2.2.19.

Теперь клиент:
Код

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.NetStatusEvent;
    import flash.net.NetConnection;
    import flash.net.Responder;
    import flash.text.TextField;
    
    public class Test extends Sprite
    {
        public function Test()
        {
            var t : TextField = new TextField();
            t.width = 500;
            addChild(t);
            
            var c : NetConnection = new NetConnection();
            
            c.addEventListener(NetStatusEvent.NET_STATUS, function (e : NetStatusEvent) : void
            {
                t.text = e.info.code.toString();
            });
            
            try
            {
                c.connect("http://localhost/amfphp/gateway.php"); // Если проверить, то тут получается c.connected = false
                c.call("TestService.auth", null, "log", "pass");
            }
            catch (e : *) // До сюда дело не доходит
            {
                t.text = e.toString();
                c.close();
            }
        }
    }
}


Я получаю событие NetStatusEvent с кодом NetConnection.Call.BadVersion. Версия флекс сдк - 4.5.1.

В нете нашёл кучу ссылок по данной проблеме, но норм решения не нашёл. :(

Кто сталкивался с такой шнягой, подскажите ок?

Спасибо за внимание!

Автор: CPlusPlusFAN 11.8.2011, 07:37
Ответ нашёл: в php.ini не хватало строчки:
Код

date.timezone = Europe/Moscow

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)