butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

На что можно заменить \r\n\ в php или как выявить символ переноса каретки в linux?

Здравствуйте, господа, вот есть файл disk2.
Когда я пишу вручную, то kvm сервер стартует без проблем.
Если же я создаю файл через php, то kvm сервер не запускается.
При этом если делать cat disk2 созданного в ручную или же через php, то выводит в консоли то же самое:

6d9eda10889b4faf9332c60d675c4962.png

php код:
$file = $_SERVER["DOCUMENT_ROOT"].'/base/tmp/disk'.$i;
$fp = fopen($file, "w"); 
$mytext = "KVM_VM_DISK_$i=\"$devicename\"\r\nKVM_VM_DISK_SIZE_$i=\"$sizes[$key]\"\r\n";
$test = fwrite($fp, $mytext);


Я думаю, что не проходит валидацию символ перевода каретки, который в php - \r\n

Что можно сделать? Как решить эту проблему?
  • Вопрос задан
  • 1541 просмотр
Решения вопроса 2
Deroy
@Deroy
Senior Developer, Software Architect
в PHP существует константа PHP_EOL - строковое значение перевода каретки под ту платформу на который работает код.

Ответ написан
Stalker_RED
@Stalker_RED
символ перевода каретки, который в php - \r\n

Нет, это не так. Есть константа PHP_EOL, которая в зависимости от платформы будет равна \n или \r\n или еще чему-нибудь. Если вы не используете эту константу, то будет зависеть от кодировки файла.

Проверьте кодировку, BOM, наличие \n в конце файла.
UPD: еще можно сравнить работающий и неработающий файлы при помощи diff.
Если php работает от имени www-data, не может ли это быть проблемой с правами?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы