sorry_i_noob
@sorry_i_noob

Почему при запуске скрипта из командной строки, если я нахожусь в каталоге скрипта, он нормально выполняется. А если не в каталоге, то нет?

Здравствуйте. Хочу запустить скрипт, который пишет строку в файл.
Если я в cmd перемещусь в папку со скриптом и напишу
php script.php
то строка запишется в файл (скрипт выполнится).

Если перемещусь в директорию выше. И напишу строку
php my_site/script.php
то файл не изменится (скрипт не выполнится).
Почему так?
Пробовал брать путь в кавычки - не помогло.

Вот код:
<?php

// строка, которую будем записывать
$text = date("F j, Y, g:i a") . "\n";

// открываем файл
$fp = fopen("result.txt", "a+");

// записываем в файл текст
fwrite($fp, $text);

// закрываем
fclose($fp);

Вот скрин проблемы:
5bf382b0b4d24648171393.pngUPD
Я понял, почему так происходит. Файл редактируется не там, где находится script.php. А там, откуда вызывает командная строка script.php.
А как это исправить никто не знает? Кроме хардкодинга абсолютного пути для для текстового файла.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
DevMan
@DevMan
потому что относительные пути не просто так называются "относительными": они вычисляются относительно текущей директории.
решается это просто:
$fp = fopen(__DIR__ . DIRECTORY_SEPARATOR . "result.txt", "a+");

php.net/manual/ru/language.constants.predefined.php
php.net/manual/ru/dir.constants.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
udjin123
@udjin123
PHP, Golang, React
Путь к изменяемому файлу быстрее всего не абсолютный, а относительный. Чтобы дать более точный ответ, нужено смотреть код
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Ну так видимо нужно писать что то вроде
php ./my_site/script.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы