2016-09-22 15 views
7

Zrobiłem prosty skrypt jak:Run php w skrypcie bash: Błąd "Nie można otworzyć pliku wejściowego"

#!/bin/bash 
php /var/www/mysite/script1.php 
php /var/www/mysite/script2.php 

Kiedy go uruchomić jako root tak:

bash update.sh 

otrzymuję następujące błędy:

Could not open input file: /var/www/mysite/script1.php 
Could not open input file: /var/www/mysite/script2.php 

Co jest nie tak? Próbowałem z uprawnieniami 777 na moich plikach php i wszystkich folderach, aby uzyskać do niego dostęp. Kiedy robię bezpośrednio php /var/www/mysite/script1.php w moim wierszu poleceń, to działa dobrze.

+0

spróbować użyć: ' sudo bash update.sh' pozwala zobaczyć, co się stanie. – d3r1ck

+0

jest taki sam ... – sylvain1264

+0

Czy skrypt bash jest uruchamiany w taki sam sposób, jak ręczne uruchamianie polecenia 'php'? Jeśli używasz jednego z nich przez usługę sieciową lub coś innego, ścieżki mogą się różnić. –

Odpowiedz

4

Gdy plik wsadowy przechodzi przez niektórych oknach zgodnych redaktorów i innych wpadek, może się zdarzyć, że znaki powrotu karetki są dołączane do końca linii (tuż przed wysuw wiersza)

tak na wszystkich liniach, na przykład to jedno:

php /var/www/mysite/script1.php 

zawiera niewidoczną \r char, który jest interpretowany jako część py argumentu php => plik /var/www/mysite/script1.php<invisible char> nie została znaleziona.

Wykonaj następujące czynności:

dos2unix update.sh > newbatchfile.sh 

lub

tr -d "\015" <update.sh> newbatchfile.sh 

(porównać rozmiary plików, jeśli newbatchfile jest mniejszy, problem był CR znaków i jest stała)

Powiązane problemy