Skrypt php+sfera+subiekt gt = błędy php5 i Apache |
Skrypt php+sfera+subiekt gt = błędy php5 i Apache |
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ą:
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 |
|
|
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 .
-------------------- |
|
|
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% 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 Dalej nie działa Ten post edytował xaitras 8.08.2018, 12:14:53 |
|
|
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 |
|
|
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.
|
|
|
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.
-------------------- |
|
|
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:
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; ? 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 |
|
|
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.
-------------------- |
|
|
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 |
|
|
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. 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 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 07:27 |