Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt php+sfera+subiekt gt = błędy php5 i Apache
xaitras
post 8.08.2018, 11:42:11
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Witam wszystkich

I znowu utknąłem. Napisałem sobie skrypt do transferu danych z zamówień do subiekta.
Wszystko działało do momentu, kiedy nie powstała potrzeba stworzenia "pola własnego rozszerzonego" w zamówieniu od klienta ZK.
Chcę zaimportować do tego pola numer zamówienia z zewnętrznego systemu.
Realizuję to identycznie jak wpisy do uwag zamówienia.

Oto końcówka kodu z problemową linijką:

  1. $oDk->Uwagi = "tel. ".$telefon." - ".$faktura." - ".substr($kom_klient, 0, 410);"... - ".$kom_admin;
  2.  
  3. if( $pobranie == 1 ) { $oDk->PlatnoscKartaKwota = $oDk->KwotaDoZaplaty;}
  4.  
  5. $oDk->PoleWlasne['zamowienie'] = $nr_oryginalny; ////// TO NIE CHCE BANGLAĆ ! /////
  6.  
  7. $oDk->Zapisz();
  8. $Subiekt->Zakoncz();


Po wywołaniu pełnego kodu wykrzacza się raz Apache a raz php cli. Php jest w wersji 5. Zmienna $nr_oryginalny jest typu integer.

Dodam, że bez zaznaczonej linijki skrypt działa wyśmienicie.


BŁĘDY Z APACH'A

Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: WebServ(apache).exe
Wersja aplikacji: 2.2.22.0
Sygnatura czasowa aplikacji: 4f38f0e8
Nazwa modułu z błędem: php5ts.dll
Wersja modułu z błędem: 5.4.10.0
Sygnatura czasowa modułu z błędem: 50d229d5
Kod wyjątku: c0000005
Przesunięcie wyjątku: 000779d7
Wersja systemu operacyjnego: 6.1.7601.2.1.0.256.48
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 0a9e
Dodatkowe informacje 2: 0a9e372d3b4ad19135b953a78882e789
Dodatkowe informacje 3: 0a9e
Dodatkowe informacje 4: 0a9e372d3b4ad19135b953a78882e789



Pomoże ktoś?

Ten post edytował xaitras 8.08.2018, 11:48:11
Go to the top of the page
+Quote Post
viking
post 8.08.2018, 11:50:31
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Co masz w $nr_oryginalny? Wyżej po substr masz ; zamiast .


--------------------
Go to the top of the page
+Quote Post
xaitras
post 8.08.2018, 12:04:12
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


W "$nr_oryginalny" mam numer zamówienia liczący max. 8 znaków (cyfr). Z dokumentacji sfery wynika, że max pojemność pola to 30 znaków.
Ciekawe jest to, że czasami skrypt przejdzie bez błędu ale tylko w 10% wink.gif

Poprawiłem bląd ze średnikiem.

Teraz wyświetliło mi :

object(variant)#1 (0) { }

Do pola własnego wartość została zapisana. Wcześniej wystąpił błąd:

Podpis problemu:
Nazwa zdarzenia problemu: APPCRASH
Nazwa aplikacji: php.exe
Wersja aplikacji: 5.4.10.0
Sygnatura czasowa aplikacji: 50d21a79
Nazwa modułu z błędem: php5ts.dll
Wersja modułu z błędem: 5.4.10.0
Sygnatura czasowa modułu z błędem: 50d229d5
Kod wyjątku: c0000005
Przesunięcie wyjątku: 000779d7
Wersja systemu operacyjnego: 6.1.7601.2.1.0.256.48
Identyfikator ustawień regionalnych: 1045
Dodatkowe informacje 1: 0a9e
Dodatkowe informacje 2: 0a9e372d3b4ad19135b953a78882e789
Dodatkowe informacje 3: 0a9e
Dodatkowe informacje 4: 0a9e372d3b4ad19135b953a78882e789



ok zostawiłem sobie jeszcze wpis var_dump($oDk);
chyba już jestem zmęczony wink.gif

Dalej nie działa sad.gif

Ten post edytował xaitras 8.08.2018, 12:14:53
Go to the top of the page
+Quote Post
Pyton_000
post 8.08.2018, 12:20:54
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Czyli jak wywalisz tą 1 linijkę to działa a inaczej nie?

Powiedz może co to za libka, albo pokaż strukturę $oDk
Go to the top of the page
+Quote Post
xaitras
post 8.08.2018, 12:29:35
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Jak wywalę to:

$oDk->PoleWlasne['zamowienie'] = $nr_oryginalny;

to działa super ( i tak od 2 lat)

Ale potrzebuję wpisywać z automatu nr zamówienia do pola własnego (wcześniej oczywiście zdefiniowanego w subiekcie).

Wbijam się do bazy za pomocą metod ze sfery więc teoretycznie powinno działać bez problemu.
Niestety coś nie pasuje Apach'owi i sieje błędami.

php5ts.dll


Z dokumentacji sfery:

Atrybut PoleWlasne
Pozwala na określanie wartości rozszerzonych pól własnych.
Parametry
bstrNazwa
String. Nazwa pola własnego.
Uwagi
Odwołanie do atrybutu PoleWlasne powinno wyglądać następująco:
obiekt.PoleWlasne("Nazwa_pola") = Wartosc_pola
gdzie Wartosc_pola ma odpowiadać typowi pola własnego.

Pola własne obiektu SuDokument są dostępne po wykupieniu rozszerzenia Niebieski Plus dla InsERT GT.
Wartości pól własnych są zapisywane w tabeli pw_Dane.
Przykład
Przykład pokazuje, w jaki sposób można ustawić wartości pól własnych "Id umowy" (liczba)
oraz "Tekst umowy" (tekst) za pomocą Sfery.

  1. Sub SuDokument_PoleWlasne()
  2. On Error GoTo ErrHandler
  3.  
  4. Dim oSubGT As InsERT.Subiekt
  5. Dim oDok As InsERT.SuDokument
  6.  
  7. Set oSubGT = UruchomSubiekta()
  8. Set oDok = oSubGT.SuDokumentyManager.WczytajDokument("FS 1/2008")
  9. oDok.PoleWlasne("Id umowy") = 3
  10. oDok.PoleWlasne("Tekst umowy") = "aaaa"
  11. oDok.Zapisz
  12. oDok.Wyswietl
  13.  
  14. oDok.Zamknij
  15. Exit Sub
  16.  
  17. ErrHandler:
  18. MsgBox Err.Number & " - " & Err.Description
  19. End Sub
Go to the top of the page
+Quote Post
viking
post 8.08.2018, 12:58:34
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Wyświetl błędy PHP bo apache nic nie mówi.


--------------------
Go to the top of the page
+Quote Post
xaitras
post 8.08.2018, 13:09:14
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Na początku skryptu mam:

  1. ini_set( 'display_errors', 'On' );
  2. error_reporting( E_ALL );


Problem w tym, że wyświetla tylko "Fatal error"albo wogóle żadnego błędu.
Jak przechwycić wyjątek z tej linijki : $oDk->PoleWlasne['zamowienie'] = $nr_oryginalny; questionmark.gif?
Próbowałem try, catch ale nic nie wyświetla.

Skrypt po prostu w pewnym momencie się zatrzymuje i nic się nie dzieje bo na serwerze wyskakuje okno z komunikatem o zatrzymaniu apache.

Ten post edytował xaitras 8.08.2018, 13:11:15
Go to the top of the page
+Quote Post
viking
post 8.08.2018, 13:10:50
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Sprawdź w logach PHP.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 8.08.2018, 13:26:50
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Zobacz tak:

Kod
$oDk->PoleWlasne->zamowienie = $nr_oryginalny;

Albo

Kod
$oDk->PoleWlasne('zamowienie') = $nr_oryginalny;


Ten post edytował Pyton_000 8.08.2018, 13:30:00
Go to the top of the page
+Quote Post
xaitras
post 10.08.2018, 08:44:49
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Pierwsza opcja:

Fatal error: Uncaught exception 'com_exception' with message 'safearray has no properties' in C:\WebServ\httpd\PANEL\przenies_pobrania.php:231 Stack trace: #0 C:\WebServ\httpd\PANEL\przenies_pobrania.php(231): unknown() #1 {main} thrown in


Druga opcja:

Fatal error: Can't use method return value in write context in

Już wcześniej próbowałem..

Utworzyłem plik php_errors.log i ma ustawione prawa do zapisu ale nic do niego nie wpada.
Wcześniej nie miałem potrzeby podglądu błędów bo na bieżąco były widoczne ze skryptu.

Jedyne co udało się odczytać z logów apacha:

PHP Fatal error: Call to private f\xbe!gl\xbe!g`\xbe!g\xc0<!g\x10>!g\x10?!g\xc0@!g::__destruct() from context '' in



Zauważyłem, że po wystąpieniu błędu, uruchomienie ponowne skryptu skutkuje prawidłowym działaniem.
Więc czasami działa bez problemu. Nie mam pojęcia dlaczego apache się wysypuje.

POMOCY! Bo już mi ręce opadają. Ostatecznie mógłbym wykorzystać pole "uwagi" do tego celu ale chciałbym żeby pole do którego trafia
nr zamówienia było "czyste" - bez dodatkowych informacji. Inaczej będę musiał filtrować treść a to będzie dodatkowa zabawa.

co_jest.gif

Ok już nie ważne.
Udało mi się wyciągnąć z bazy subiekta nr oryginalny - dotyczy ZK.
Jeśli kiedykolwiek ktoś będzie miał taki problem to dane siedzą w tabeli "dok__Dokument" , kolumnie "dok_DoDokNrPelny".
Standardowe zapytanie sql i mam komplet potrzebnych informacji.

Wszystkim dziękuję z zaangażowanie.

Temat do zamknięcia.

Ten post edytował xaitras 10.08.2018, 08:45:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 16:51