Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak uruchomić skrypt z poziomu CLI
Malinaa
post 29.05.2024, 12:14:46
Post #1





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Jak uruchomić skrypt PHP z poziomu CLI na localhost (i serwer zdalny), system Windows (a Linux)?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 29.05.2024, 13:23:18
Post #2





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




nie bardzo rozumiem pytania. no ale generalni to sie robic tak:

php nazwaskryptu.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 29.05.2024, 23:56:09
Post #3





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Pytam w odniesieniu do mojego frameworka.
Jeżeli umieszczę w katalogu głównym plik np. sync.php: <?php echo 'PIP'; ?>
Jest ok, wpiszę w terminalu php sync.php i wyświetli PIP.

Ale mam tu "oddzielone warstwy" aplikacji, htaccess itd. i brak pliku z rozszerzeniem sync.php, nawet index.php znajduje się w katalogu public/ nie głównym, a przykładowy adresy do strony to: /show-me i wpisanie php show-me nie zadziała,
a strona (teoretycznie plik.php) jest pod danym adresem.

Nie mam tu bezpośrednie pliku (sync.php). Pytanie jak, czy można uruchomić kod pod adresem strony /show-me ?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 30.05.2024, 07:54:15
Post #4





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




Po pierwsze: mylisz dwie rzeczy - skrypt php i strona . To ze strona odpala skrypt php to inna bajka.
po drugie: do odpalania strony uzywa sie CURL - przynahmniej na linux, ale na windzie pewnie jest cos podobnego

po trzecie i najwazniejsze: Moze opisz wpierw caly kontekst czemu chcesz odpalac strone z konsoli. Bo moze sie okazac ze nie jest to ci w ogole potrzebne i wystarczy jednak dopisac mala funkcjonalnosc w twoim FW i odpalac poprostu skrypt php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 30.05.2024, 13:21:29
Post #5





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Pierwsze i drugie, jak już spróbowałem teraz stało się zrozumiałe.
Trzecie. Synchronizacja produktów Baselinker ze sklepem ma być odpalana z poziomu webowego i poziomu CLI.

1. Jeżeli mam odpalić po prostu skrypt.php to jaką małą funkcjonalność muszę dodać?
2. Gdzie powinien być umieszczony plik w strukturze katalogów FW?
3. Jak to zrobić, aby zachować przy tym bezpieczeństwo?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 30.05.2024, 13:44:24
Post #6





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




Na szybko to tak jak pisalem:

curl http://twojaststrona.pl/akcja

Ale takich rzeczy powinno sie unikac. Normalnie FWs udostepniaja jeszcze takie cos jak COMMANDS, ktore sluzy do odpalania skryptow z poziomu wlasnie cli. FW ustawia wowczas wszystkie parametry tak jakby to szlo przez strone, zmienne srodowiskowe, serwisy itp
Drugim krokiem jest wlasnie napisane serwisu w twojej aplikacji. Ten serwis robi co ma robic, czyli w tym przypadku laczyc sie z baselinkerem. No i generalnie wowczaas niewazne czy serwis odpalisz z akcji ze strony www, czy z COMMAND z cli. Klasa serwisu jest jedna i latwo moze byc wykorzystana z dowolnego miejsca


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 30.05.2024, 14:34:56
Post #7





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Z COMMANDS to pewnie nie będzie taka mała funkcjonalność.
Znasz może przykłady (gotowce) co jak, o co dokładnie chodzi?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 30.05.2024, 16:58:57
Post #8





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




symfony ma CONSOLE

ale generalnie zamysl jest banalny, pol godzinki i sam napiszesz.

Walisz jakis plik php console.php, w ktorym ladowane sa wszystkei podstawowe parametry FW/zmiennej srodowiskowe,biblioteki/serwisy. Tak jak ladujesz gdy odpalasz akcje przez www.
no i odpalasz z cli tak:
php console.php jakasakcja

no i w jakims tam katalogu, powiedzmy Commands, tworzysz plik jakasakcja.php ktory zawiera kod wykonujacy dana akcje/komende. Cos ala kontroler.

wiec plik console.php laduje wszystko co trzeba a potem includuje ten jakasakcja.php/ Proste


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 31.05.2024, 10:51:55
Post #9





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Rzeczywiście pól godziny i napisane, pojawia się jednak więcej pytań.

Plik dodany do projektu: https://github.com/artimman/dbmframework/bl...ain/console.php

Otwieram aplikacje w katalogu głównym, tu też mam otworzony terminal, więc plik umieszczam w głównym katalogu console.php
Nie widziałem podobnego rozwiązania, aby umieszczać Commands (plik console.php) w katalogu głównym?
Teoretycznie jest nie źle, po wpisaniu adresu w pasku przeglądarki /console.php wyświetla ERROR: 404; Message: Route not found! addRoute('/console.php')
czyli nie widzi tego pliku z przeglądarki (plik jest jakoś zabezpieczony), ale w terminalu komendy wykonuje, więc już jest nie źle.
1. Czy ten plik console.php ma tak zostać w katalogu głównym, a jakieś zabezpieczenia?

Dodałem includes
Kod
### CONSOLE COMMANDS
include(__DIR__ . DIRECTORY_SEPARATOR . 'commands' . DIRECTORY_SEPARATOR . 'action_show_me_code.php');
include(__DIR__ . DIRECTORY_SEPARATOR . 'commands' . DIRECTORY_SEPARATOR . 'action_show_me_text.php');

// INFO! Wywolanie kody pliku actionShowMeCode.php w konsoli
// $ php console.php [file_name] // Pytanie: Wykonuje wszystkie includowane pliki, a pojedynczo?

Wpisuje w terminalu: php console.php - OK, ale bez różnicy czy php console.php action_show_me_code czy cokolwiek innego wykona to samo (wszystko)?

2. Wykonuje wszystkie includowane pliki, a pojedynczo?
3. Przy synchronizacji całość powinna być dobrze zabezpieczona, co z plikami w katalogu /commans/action_show_me_code.php itd., co z bezpieczeństwem kodu, danych?

W aplikacji pozostał taki kod:
// TODO! Remove the definition from the entire project
define('DS', DIRECTORY_SEPARATOR);
define('BASE_DIRECTORY', __DIR__ . DS);

viking napisał, aby pozbyć się takich potworków, usunąć poprzedni plik config.php.dist i przerobić na .env.
Plik config.php przerobiłem na .env, ale pozostały jeszcze takie dwa potworki w pliku public/index.php, nie za bardzo da się przenieść je do .env
4. Szukam pomysłu jak to sprawnie poprawić, gdy te define() są używane w całej aplikacji?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 31.05.2024, 14:31:40
Post #10





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




1) console.php ma byc poza katalogiem PUBLIC. I tyle. moze byc glowny, moze byc inny, jak ci wygodnie, byleby byl poza PUBLIC
2) Nie rozumem pytania. Nie meniej jednak w kodzie widze teraz ze includujesz od razu wszystkie commands. Nie, masz includowac tylko te command, o ktora prosisz wywolujac console.php. No po grzyba masz ladowac wszystko
Kolejna rzecz command to ma byc klasa a nie zwykly plik php. I klasa ta ma miec funkcje np. execute ktora bedzie odpalana przez console.php
3) znowy nie rozumiem. Jaka synchronizacja?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 1.06.2024, 10:22:26
Post #11





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Jeżeli console.php może być w dowolnym katalogu poza /public to dałem do /application
https://github.com/artimman/dbmframework/bl...ion/console.php
Command zmienione na klasę.

Nie wiem co z php console.php jakasakcja - co z jakasakcja, ponieważ czy wpiszę komendę php console.php, czy php console.php jakasakcja wykona to samo $command->executeCommand();

Synchronizacja produktów Baselinker ze sklepem. Plik console.php generalnie jest już zabezpieczony (nie dostępny publicznie), ale przyszło mi na myśl, czy taki mechanizm nie powinien być lepiej, dodatkowo zabezpieczony w jakiś sposób, ponieważ przesyłane są tu dane poufne (ceny itp.) i nie chcielibyśmy, aby ktoś z zewnątrz pobrał te dane. Jakie są odpowiednie zabezpieczenia dla takiej synchronizacji kodu, danych?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 1.06.2024, 14:35:42
Post #12





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




Cytat
Nie wiem co z php console.php jakasakcja - co z jakasakcja, ponieważ czy wpiszę komendę php console.php, czy php console.php jakasakcja wykona to samo $command->executeCommand();

Czasami jak wylaczysz myslenie to ja nie wiem jak z toba rozmawiac...

Przeciez w console.php teraz masz
$command = new ExampleCommand();
$command->executeCommand();

czyli za kazdym razem odpalasz te komende nie wazne jakie parametry przyjmie console.php. No to logiczne ze zawsze ci sie bedzie odpalac.
A ja wyraznie mowilem, ze console.php ma odpalac te command, ktora podales jako parametr

Co do synchronizacji to jesli commands sa poza katalogiem public to sa bezpieczne. No chyba ze ktos ci sie wlamie na konto ale to wtedy niewazne co to i tak klapa


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 1.06.2024, 15:58:02
Post #13





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


wink.gif Odznaczam // $command->executeCommand(); bo tego nie chcemy i zostało $command = new ExampleCommand();

No i nie wiedziałem jak sprawić, aby wykonało się: php console.php ExampleCommand executeCommand
ale dodałem __construct() i wygląda, że jest całość Ok.

Czyli poza włamywaczami jest na sto procent bezpiecznie. Super.

Ten post edytował Malinaa 1.06.2024, 17:13:57


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 1.06.2024, 18:33:19
Post #14





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




No nadal zle. Nie sluchasz co do ciebie mowie.

console.php ma nie odpalac recznie rzadnej komendy. No ty tereaz w console wlozyles odpalanie ExampleCommand. Console tego ne robi. A co jak bedzeisz chcial dodac kolekna komende? I kolejna i 100 kolejnych?

Skup sie:
console ma includoac komende podane w parametrze wywolania

php console.php Example

a w konsole php pobierasz ten parametr

$command = argv[1]; // czy pod jakim to arguiement bedzie

require_once('path_to_commands/' . $command . "Command.php");

$class = $command . "Command";
$obj = new $class;
$obj->execute();

I juz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 2.06.2024, 09:57:11
Post #15





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Teraz powinno być Ok. Chyba, że coś jeszcze jest do poprawienia?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 3.06.2024, 09:09:54
Post #16





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




Jest lepiej ale:

1) Juz ci mowilem ze Commands moze byc wiecej wiec nadawaj im nazwy tego co robia a nie ConsoleCommand.. Jesli bedzies robil synchronizera, to nazwij to SynchroniseCommand czy jakos tak

2) Ale po co w parametrach console.php jeszcze nazwa funkcje klasy Command? Klasa ma miec jedna stala metode execute() i ona ma byc zawsze odpalana jako glowna metoda Command i juz. A nie execute1, execute2, execute3. Jedna klasa - jedna komenda. Bedziesz chcial inna komende to napisze inna kolejna klase command.

3) No i najlepiej stworz interface CommandInterface, z metoda execute i wszystkie klasy Command maja implementowac ten interface


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 3.06.2024, 16:09:57
Post #17





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Napisałem tak jak mówiłeś, nie bawiąc się metodami itp., bo przez to dochodzenie do szczegółów z pół godzinki zrobiło się 3x po godzinie, a miało być tak pięknie raz dwa i gotowiec wink.gif
Dziękuje bardzo. Teraz chyba jest już super Git?

Ten post edytował Malinaa 3.06.2024, 16:29:02


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
nospor
post 3.06.2024, 16:39:55
Post #18





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6308
Dołączył: 27.12.2004




Cytat
bo przez to dochodzenie do szczegółów z pół godzinki zrobiło się 3x po godzinie

Tak to jest jak nei sluchasz co do ciebie pisze wink.gif

teraz wyglada znosnie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Malinaa
post 3.06.2024, 17:57:26
Post #19





Grupa: Zarejestrowani
Postów: 569
Pomógł: 6
Dołączył: 21.07.2008

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


Jak to znośnie!?


--------------------
I welcome you on the Internet >>> Design by Malina
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: 25.09.2024 - 13:22