Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wołanie Javy z PHP
ppk
post 1.09.2010, 19:47:07
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.08.2010

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


Dzień dobry!

Mam następujący problem:

Na serwerze jest plik /cr.php o następującej treści:

  1. <?php
  2. exec("java -jar klasa.jar plik.xml");


Pominąwszy kwestię, że powyższe rozwiązanie nie działa spod frameworka symfony (czego nie rozumiem, ale nie ważne), skrypt wykazuje dziwne zachowanie:

Gdy wołam ze swojego komputera skrypt:

http://adres.serwera/cr.php

wszystko działa tak jak trzeba, klasa Javy produkuje odpowiednie pliki itd.

Natomiast, gdy wołam ten skrypt z poziomu PHP, np.:

  1. <?php
  2. $plik = file_get_contents("http://localhost/cr.php");


Java zwraca error (problem z odczytem pliku).

Zupełnie nie rozumiem tego zachowania, będę wdzięczny za jakąkolwiek wskazówkę na temat tego dlaczego zachowanie skryptu jest tak różne w podobnych w końcu sytuacjach.

Pozdrawiam,
/PPK
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
michaJlS
post 1.09.2010, 20:44:45
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


a jesteś pewien, że w tym drugim przypadku to java zwraca błąd?
Go to the top of the page
+Quote Post
ppk
post 1.09.2010, 20:49:56
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.08.2010

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


Tak, zdecydowanie. Właśnie dlatego tego nie rozumiem.

Pozdrawiam,
/PPK
Go to the top of the page
+Quote Post
michaJlS
post 1.09.2010, 20:54:41
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 9
Dołączył: 21.05.2004
Skąd: Glogau/Breslau

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


i głupie pytanie, ale http://adres.serwera/ wskazuje na to samo co http://localhost/ ? ew. wklej błąd z java
Go to the top of the page
+Quote Post
fander
post 3.09.2010, 10:42:12
Post #5





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


Kolego, file_get_contents nie wykonuje ci kodu zawartego w pliku który podajesz w ścieżce, pobierasz w ten sposób zawartość pliku (jak sama nazwa funkcji wskazuje content = zawartość), błąd pewnie zwraca ci php, ponieważ nie jest w stanie pobrać pliku ze ścieżki (pewnie masz zablokowane na serwerze wywoływanie zdalnych plików). Aby działało to albo użyj include($sciezkaDoPliku) lub skorzystaj z curla

Ten post edytował fander 3.09.2010, 10:45:38
Go to the top of the page
+Quote Post
mortus
post 3.09.2010, 11:51:23
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@fander Użycie file_get_contents w ten sposób:
  1. $zmienna = file_get_contents("http://localhost/cr.php");
spowoduje wykonanie skryptu php, i pobranie treści przez ten skrypt wygenerowanej. Oczywiście odpowiednie dyrektywy php muszą być włączone. Gdyby natomiast atrybut wspomnianej funkcji był ścieżką bezwzględną, to wtedy zostanie wczytana zawartość pliku (choć w przypadku pliku php wszystko się posypie).

Co do problemu: co znaczy stwierdzenie "gdy wołam ze swojego komputera skrypt"? Zajrzyj również do manuala PHP.

Ten post edytował mortus 3.09.2010, 11:59:34
Go to the top of the page
+Quote Post
Crozin
post 3.09.2010, 13:15:19
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Pominąwszy kwestię, że powyższe rozwiązanie nie działa spod frameworka symfony
Symfony nie ma absolutnie nic do tego.

Być może program w Javie jest wywoływany przez użytkownika, który nie ma uprawnień do odczytywania/zapisywania plików w danym katalogu.
Go to the top of the page
+Quote Post
ppk
post 3.09.2010, 15:06:48
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 5.08.2010

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


Dziękuję za pomoc, znalazłem już rozwiązanie swojego problemu, które leżało zupełnie gdzie indziej, tzn. nie było związane ani z Javą ani z Symfony.

Powód był bardzo prozaiczny i bardzo głupi: nie zamykałem generowanego pliku (wołając z Symfony), więc klasa Javy nie miała co przetwarzać sad.gif

Pozdrawiam,
/PPK
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: 19.07.2025 - 09:55