Найти тему
1772 подписчика

Недавно один горожанин задавал в телеграм-чате по PHP вопрос. Смотрите, дескать, у меня open_basedir включает папку, куда я пытаюсь сохранить файл, а глупый PHP ругается и говорит, что open_basedir её не включает. И у меня ничего не работает. Памагити.


Это, вообще, очень интересная категория вопросов: когда интерпретатор в явном виде сообщает тебе, чем он недоволен, но ты точно знаешь, что недоволен он быть не может, потому что у тебя всё хорошо, поэтому проблема в чем-то другом.

На вопрос о том, каково значение open_basedir, вопрошающий привел кусок конфига с абсолютно верным значением. Каковое, безусловно, должно было работать.

Такого рода ситуации всегда ставят в тупик людей, плохо понимающих принцип работы компьютера. Я не постесняюсь озвучить его еще раз: компьютер тупой. Но чрезвычайно исполнительный. Это просто идеальный дуболом, который без страха и упрека делает именно то, что ему велено.

Исходя из этого, я задал боярский вопрос: а посмотри-ка, мил человек, какое значение open_basedir имеет непосредственно внутри твоего скрипта? Ну вот, прямо через ini_get()?

Оказалось, значение было переопределено в одном из многочисленных конфиг-файлов (чего и следовало ожидать). Оставалось потратить пять минут на поиск этого файла (тут помогло заклинание "grep -nri open_basedir /etc") - и вот горожанин уже шагает по граблям дальше.

Верить в том, что компьютер с тобой заодно - большая ошибка. Он делает то, что ему сказано, а не то, что нужно программисту.
Недавно один горожанин задавал в телеграм-чате по PHP вопрос.
1 минута