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/.
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 [tt]php5-cgi[/tt], 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
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
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...
[quote=Piotr3ks]W takiej formie u mnie działa.[/quote]
Fajnie :)
Offline
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
[quote=mati75]popraw mój nick w pierwszym poście.[/quote]
Sory, palec źle wpadł...
[quote=mati75]Cos mi się wydaje, że gdzieś jest błąd w konfiguracji. Albo nginx albo php, bo u mnie działa.[/quote]
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
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
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.file-fortune.file-fortune.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
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
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
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-to-install-linux-nginx-mysql-php-lemp-stack-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
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
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
[quote=ba10]Sprawdziłeś po przelogowaniu w jakim znajdujesz się katalogu ?[/quote]
Nie łapie...
[quote=ba10]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.[/quote]
[quote=/me]
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
[/quote]
Offline
[quote=P@blo]Sprawdziłeś po przelogowaniu w jakim znajdujesz się katalogu ?
Nie łapie...[/quote]
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.
[quote=ba10]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
[/quote]
Sprawdziłeś ? Uruchamia się skrypt wyżej podanymi sposobami ?
Ostatnio edytowany przez ba10 (2014-01-31 09:08:39)
Offline
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
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
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
Hmm, ciekawe... Czy użytkownik www-data ma dostęp do katalogów /home/www/public ?
Offline
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
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
Podpowiem, że root domyślnie nie ma /usr/games/ w PATH.
Offline
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
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
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
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
Time (s) | Query |
---|---|
0.00006 | SET CHARSET latin2 |
0.00003 | SET NAMES latin2 |
0.00042 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.133.129.8' WHERE u.id=1 |
0.00086 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.133.129.8', 1732486106) |
0.00028 | SELECT * FROM punbb_online WHERE logged<1732485806 |
0.00020 | SELECT topic_id FROM punbb_posts WHERE id=254213 |
0.00140 | SELECT id FROM punbb_posts WHERE topic_id=25116 ORDER BY posted |
0.00029 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25116 AND t.moved_to IS NULL |
0.00028 | SELECT search_for, replace_with FROM punbb_censoring |
0.00215 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25116 ORDER BY p.id LIMIT 0,25 |
0.00138 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25116 |
Total query time: 0.00735 s |