Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.



Nadworny matematyk




Hej,
Oczywiście standardowe komendy typu:
<?php
system('ls -l');
?>działa, ale za nic w świecie nie mogę doprowadzić do tego aby ruszyło
<?php
system('fortune');
?>Próbowałem z pełną ścieżką i inne.
Zainstalowane:
i nginx - small, powerful, scalable web/proxy server i A nginx-common - small, powerful, scalable web/proxy server - common files i A nginx-full - nginx web/proxy server (standard version) i php5-cgi - server-side, HTML-embedded scripting language (CGI binary) i A php5-common - Common files for packages built from the php5 source i php5-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) i A php5-json - JSON module for php5
Początkowo nie miałem php5-cgi, ale po konsultacji z mati75 (bo jemu to działa) doinstalowałem, ale nie wiem co dalej bo trochę mnie to już przerosło.
Z poziomu konsoli za pomocą php5-cgi rusza i działa. Na stronie niestety niet.
/etc/nginx/sites-enable/default:
server {
listen 80 default_server;
root /home/www/;
index index.php index.html index.htm;
server_name localhost;
location ~ ^/~(.+?)(/.*)?$ {
alias /home/$1/public_html$2;
index index.php index.html index.htm;
autoindex on;
}
location /public {
alias /home/www/public/;
index index.php index.html index.htm;
autoindex on;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}Reszty nic nie zmieniałem tak więc jest dystrybucyjne...
Ktoś pomoże? Wiem, że to głupota, ale nie daje mi to spokoju dlaczego jeden program (ls) działa a inny (fortune) nie...
Z góry dzięki
Pozdrawiam
Ostatnio edytowany przez P@blo (2014-01-30 12:52:11)
Offline



Też człowiek :-)




Z tego co pamiętam to funkcja system() zwraca ostatnią linię wykonania polecenia - w Twoim przypadku zapewne jest to pusta linia.
Edit:
<?php
system("/usr/games/fortune");
?>W takiej formie u mnie działa.
Ostatnio edytowany przez Piotr3ks (2014-01-30 12:17:24)
Offline



Nadworny matematyk




Może trochę przesadziłem z tym skryptem. Oczywiście próbowałem wszystkie możliwości...
Aktualnie kod jest taki:
<?php
echo '<html>';
echo '<meta charset="utf-8">';
echo exec("/usr/games/fortune -s");
echo system("/usr/games/fortune -s");
echo '</html>';
?>I nie działa...
Piotr3ks napisał(-a):
W takiej formie u mnie działa.
Fajnie :)
Offline




Psuj





popraw mój nick w pierwszym poście.
Cos mi się wydaje, że gdzieś jest błąd w konfiguracji. Albo nginx albo php, bo u mnie działa.

Offline



Nadworny matematyk




mati75 napisał(-a):
popraw mój nick w pierwszym poście.
Sory, palec źle wpadł...
mati75 napisał(-a):
Cos mi się wydaje, że gdzieś jest błąd w konfiguracji. Albo nginx albo php, bo u mnie działa.
Nie mówię nie, ale jedyny konfig jaki zmieniałem to ten co podałem. Mogę podać inne, ale to proszę o info jakie.
Offline



Nadworny matematyk




Sory za post pod post.
Poradzono mi rozwiązanie takie:
cat /home/www/public/fortune.sh
#!/bin/bash
/usr/games/fortune -s
-rwxrwxrwx 1 www-data www-data 34 sty 30 13:20 fortune.sh
./fortune.sh
190. Chuck Norris... (bla bla bla...)
cat /home/www/public/fortune2.php
<?php
echo shell_exec("/home/www/public/fortune.sh");
?>Ale, też nie działa... o_0
Offline







Podobno człowiek...;)








A to musi być php?
Przecież system lub shell_exec to jest dziura większa, niż lej po atomówce, w ten sposób można każdy serwer załatwić.
A php - to jest horror w dziedzinie bezpieczeństwa takich skryptów.
Nie lepiej zrobić sobie np w perlu robocika, który wisi na sockecie sieciowym,
i na zapytanie odpowiada wynikiem fortune?
W php lub cgi też łatwo ogarnąć wywołanie na socket.
Przy okazji elegancko można trzymać php w chroocie,
Albo może gotowy moduł php?
http://pear.php.net/manual/en/package.fileformats.f … ne.getall.php
Albo perlem (np jako cgi):
http://search.cpan.org/~gward/Fortune-0.2/Fortune.pm
Ostatnio edytowany przez Jacekalex (2014-01-30 14:14:26)
Offline



Nadworny matematyk




Może i może, ale:
0. Laik ze mnie.
1. Nie znam Perla.
2. Generalnie mało wiem...
Zacząłem robić w php i tak dokładam dokładam, aż trafiłem na ten głupi problem widocznie nie do przejścia. Myślę, że dziura nie dziura, ale skoro innym to hula to czemu nie mnie?
Offline







Podobno człowiek...;)








Znasz Perla lepiej, niż Ci się zdaje, jest łatwiejszy od PHP, praktycznie równie trudny, jak Bash. :D
W repozytorium PEAR masz też gotowy moduł do fortune dla php, jeśli perl jest bee. ;)
Jakbyś chciał się pobawić Gentusiem, to nawet jest pod ręką:
* dev-php/PEAR-File_Fortune
Available versions: ~1.0.0
Homepage: http://pear.php.net/File_Fortune
Description: Interface for reading from and writing to fortune files.Ostatnio edytowany przez Jacekalex (2014-01-30 14:42:55)
Offline



Nadworny matematyk




Kusisz... ;) Ale to dobrze :D przeglądnę na pewno, ale mimo wszystko chciałbym się dowiedzieć dlaczego to nie działa.
Korzystałem z tego, więc sory bo mówiłem, że nic się nie zmieniało w innych configach, a jednak:
https://www.digitalocean.com/community/articles/how … k-on-debian-7
Tylko, że akurat to co było do zmienienia u mnie już było zrobione więc, dlatego nic nie zmieniałem (poza 1 na 0, ale to i tak mi nic nie robi).
Przeinstalowałem od nowa i zrobiłem to samo i dalej nie działa tak więc to nie ja psuje, jak coś to powyższy autor art'a.
Offline



Nadworny matematyk




Mam nowe informacje i mam nadzieje, że to będzie pomocne:
pi@malina ~ $ fortune #debian.pl Apr 16 23:47:28 <ikuko> więcej grzechów nie pamiętam Apr 16 23:48:47 <MadCow^> Grzechów :) Apr 16 23:49:05 <ikuko> ;p Apr 16 23:49:15 <MadCow^> ikuko :: Lubujesz w Grzegorzach ? pi@malina ~ $ sudo su root@malina:/home/pi# fortune bash: fortune: command not found
Jeśli można prosić te osoby, którym to działało o sprawdzenie co się dzieje gdy wywoła się z root'a. Mam cichą nadzieje, że to winowajca...
Offline



Członek DUG
Sprawdziłeś po przelogowaniu w jakim znajdujesz się katalogu ?
Druga sprawa, skrypt w powłoce bash możesz wywoływać na kilka sposobów będąc w katalogu ze skryptem np.
./skrypt.sh
lub
bash skrypt.sh
Edyta.
Prawa nadane są odpowiednio ? Przynajmniej chmod +x.
Ostatnio edytowany przez ba10 (2014-01-31 08:48:24)
Offline



Nadworny matematyk




ba10 napisał(-a):
Sprawdziłeś po przelogowaniu w jakim znajdujesz się katalogu ?
Nie łapie...
ba10 napisał(-a):
Druga sprawa, skrypt w powłoce bash możesz wywoływać na kilka sposobów będąc w katalogu ze skryptem np.
Kod:
./skrypt.shlub
Kod:
bash skrypt.shEdyta.
Prawa nadane są odpowiednio ? Przynajmniej chmod +x.
/me napisał(-a):
Kod:
cat /home/www/public/fortune.sh #!/bin/bash /usr/games/fortune -s -rwxrwxrwx 1 www-data www-data 34 sty 30 13:20 fortune.sh
Offline



Członek DUG
P@blo napisał(-a):
Sprawdziłeś po przelogowaniu w jakim znajdujesz się katalogu ?
Nie łapie...
Jak logujesz się na roota to on loguje się jak nie masz inaczej ustawione w systemie, do swego katalogu domowego i może w w tym katalogu próbowałeś uruchomić skrypt, którego tam nie było.
ba10 napisał(-a):
Druga sprawa, skrypt w powłoce bash możesz wywoływać na kilka sposobów będąc w katalogu ze skryptem np.
Kod:
./skrypt.shlub
Kod:
bash skrypt.sh
Sprawdziłeś ? Uruchamia się skrypt wyżej podanymi sposobami ?
Ostatnio edytowany przez ba10 (2014-01-31 09:08:39)
Offline



Nadworny matematyk




Coś chyba jest za wcześnie dla nie dzisiaj tak więc BARDZO przepraszam bo chyba dalej nie trybie:
pi@malina ~ $ sudo su root@malina:/home/pi# cd root@malina:~# cp /home/www/public/fortune.sh . root@malina:~# ./fortune.sh Sabina - ma ładne imię, ale dla psa, a nie dla kobiety root@malina:~# bash fortune.sh Barnaba - dobre imię dla osła, uczynny, miły wieśniaczek. root@malina:~# cat fortune.sh #!/bin/bash /usr/games/fortune -s root@malina:~# fortune bash: fortune: command not found root@malina:~# fortune-my Idzie sobie panienka... root@malina:~# ls -l /usr/bin/fortune-my -rwxr-xr-x 1 root root 22172 sty 29 15:21 /usr/bin/fortune-my
Jak się loguje to jak widać ląduje w tym katalogu co byłem. Fortune-my jest skopiowany jak widać gdzie.
root@malina:~# cat fortune.sh
#!/bin/bash
/usr/games/fortune -s
root@malina:~# cat /home/www/public/fortune2.php
<?php
echo system("fortune-my");
echo exec("fortune-my");
echo system("/root/fortune.sh");
echo exec("/root/fortune.sh");
?>Mam nadzieje, że dobrze zrozumiałem i coś się przyda.
Offline



Członek DUG
Przekopiuj skrypt fortune.sh z katalogu root do katalogu /var/www ( czyli tam gdzie masz stronę www zapewne ). Plik php wyglądać powinien tak :
<?php
echo exec("bash /var/www/fortune.sh");
?>i powinno działać.
Offline



Nadworny matematyk




pi@malina /home/www/public $ pwd
/home/www/public
pi@malina /home/www/public $ cat fortune.sh
#!/bin/bash
/usr/games/fortune -s
pi@malina /home/www/public $ ls -l fortune.sh fortune2.php
-rw-r--r-- 1 root root 57 sty 31 09:47 fortune2.php
-rwxrwxrwx 1 www-data www-data 34 sty 30 13:20 fortune.sh
pi@malina /home/www/public $ cat fortune2.php
<?php
echo exec("bash /home/www/public/fortune.sh");
?>No niestety. Powinno, ale nie chce...
Offline



Członek DUG
Hmm, ciekawe... Czy użytkownik www-data ma dostęp do katalogów /home/www/public ?
Offline



Nadworny matematyk




Nie wiem co to znaczy ale chyba tak, bo jak już pisałem wcześniej inne skrypty działają poza tą komendą w katalogu /home/www/public. Teraz tylko zmieniłem właściciela tego katalogu bo był nim root, ale i tak nic to nie zmieniło...
Co więcej nawet takie coś:
<?php
exec("sudo sh -c '/usr/games/fortune -s > /home/www/public/fortunka'");
?>i dodanie do sudo www-data nic nie zmienia... 'fortunka' jest pusta...
Offline



Członek DUG
Hmm ciężka sprawa u mnie działa i wersja taka :
<?php
system('/usr/games/fortune -s');
?>i taka :
<?php
echo exec("bash /var/www/fortune.sh");
?>Musi to być jakaś pierdoła, u wszystkich działa, u Ciebie nie, zwłaszcza, że podobno działają komendy z basha wstawione do php.
Edytka
Poszukaj czegoś w ustawieniach NGINX być może ma jakieś ustawienia co do php czy wykonywania skryptów.
Ostatnio edytowany przez ba10 (2014-01-31 11:00:19)
Offline






Admin łajza







Podpowiem, że root domyślnie nie ma /usr/games/ w PATH.
Offline



Nadworny matematyk




No niestety:
pi@malina ~ $ grep -r safe /etc/php5/ /etc/php5/fpm/php.ini:; **You CAN safely turn this off for IIS, in fact, you MUST .** /etc/php5/fpm/php.ini:;filter.default = unsafe_raw /etc/php5/fpm/php.ini:; the 5th parameter to mail(), even in safe mode. /etc/php5/fpm/php.ini:; http://php.net/sql.safe-mode /etc/php5/fpm/php.ini:sql.safe_mode = Off /etc/php5/fpm/php.ini:; Default host for mysql_connect() (doesn't apply in safe m ode). /etc/php5/fpm/php.ini:; Default user for mysql_connect() (doesn't apply in safe m ode). /etc/php5/fpm/php.ini:; Default password for mysql_connect() (doesn't apply in sa fe mode). /etc/php5/fpm/php.ini:; Default host for mysql_connect() (doesn't apply in safe m ode). /etc/php5/fpm/php.ini:; Default user for mysql_connect() (doesn't apply in safe m ode). /etc/php5/fpm/php.ini:; Default password for mysqli_connect() (doesn't apply in s afe mode). pi@malina ~ $ grep -r safe /etc/nginx/
Wydaje mi się, że to jest wina tego, że korzystam z php5-fpm a nie php5-cgi. Nie znam się na tym kompletnie, ale nie znalazłem tutora do tego cgi... Prędzej sam napisze skrypt w bashu, który wylosuje mi jakąś fortunke... Google jakoś mało konkretnie odpowiada na temat 'ngingx safe mode php'...
Offline



Nadworny matematyk




Nowe wieści. Otóż:
<?php
echo exec("bash /home/www/public/fortune.sh 2>&1");
echo "</br>";
echo system("bash /home/www/public/fortune.sh 2>&1");
?>mówi na stronie:
No fortunes found fortune: /usr/share/games/fortunes: No fortune files in directory. fortune:/usr/share/games/fortunes not a fortune file or directory No fortunes found No fortunes found
pi@malina /home/www/public $ ls -l /usr/share/games/ total 4 lrwxrwxrwx 1 root root 18 sty 31 12:15 fortune -> /usr/games/fortune drwxr-xr-x 3 root root 4096 sty 31 12:24 fortunes pi@malina /home/www/public $ ls -l /usr/share/games/fortunes/ total 12 drwxr-xr-x 2 root root 12288 sty 31 12:25 pl
Więc o co mu chodzi? Bo nie rozumiem...
Offline



Użytkownik
zobacz w logi serwera php moge się założyć że są wpisy o braku dostępu do katalogu czy możliwości wykonania jakiegoś programu.
Sprawdź dostęp do katalogu /usr/share/games/fortunes bo to do niego nie może się dobić serwer php.
Ostatnio edytowany przez djjanek (2014-01-31 12:36:37)
Offline



Nadworny matematyk




sudo tail /var/log/php5-fpm.log [30-Jan-2014 16:14:21] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful [30-Jan-2014 16:14:22] NOTICE: fpm is running, pid 1792 [30-Jan-2014 16:14:22] NOTICE: ready to handle connections [30-Jan-2014 16:14:22] NOTICE: systemd monitor interval set to 10000ms [31-Jan-2014 10:13:38] NOTICE: Finishing ... [31-Jan-2014 10:13:38] NOTICE: exiting, bye-bye! [31-Jan-2014 10:13:39] NOTICE: fpm is running, pid 9447 [31-Jan-2014 10:13:39] NOTICE: ready to handle connections [31-Jan-2014 10:13:39] NOTICE: systemd monitor interval set to 10000ms
Szkoda, że się nie założyłem ;)
Offline