Проблема кодировки на Apache на Windows2012

204
13 января 2019, 22:00

Сломал голову, помогите пожалуйста решить проблему. У меня есть небольшой скрипт, который выполняет php exec команду с каталогами на сетевом ресурсе. Структура проекта:

.htaccess
Controller.php
Config.php
FolderReader.class.php
public/ index.php
        script.js

Простой пример: На пользовательской странице index.php c заголовком

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

в директории public через js я получаю значение в input и отправляю в php-файл контроллер post запрос по Ajax

В Ajax дополнительно указываю параметр scriptCharset: "utf-8"; (Пробовал и без указания, но разницы никакой), отправляется к примеру переменная number=1234;

В файле контроллера принимаю:

if (isset($_POST['number']) && !empty($_POST['number'])){
    $project =  $_POST['number'];
    //создается объект и выполняется его метод
    $finder = new FolderReader($project);
    $data = $finder->permissionSetter();
    //данные возвращаются на страницу
    echo json_encode($data);

Есть несколько промежуточных методов которые выполняют валидацию, перед созданием объекта, но это сейчас не важно.

Что делает метод permissionSetter(): Он считывает каталог, и выполняет exec команду на всех дочерних папках. Если выполнять ее в терминале windows - выглядит она так

icacls "\\10.0.7.41\project\1111_Project\1111_01_Каталог" /inheritance:e /T или

icacls "\\10.0.7.41\project\1111_Project\1111_02_Каталог" /inheritance:e /T или

icacls "\\10.0.7.41\project\1111_Project\1111_03_AnyFolder" /inheritance:e /T

Где в цифры 1111 в \1111_Project\ это number из post.(как в промежутке получается полный путь думаю тоже не важно). В методе permissionSetter я перебираю массив с папками и для каждой папки выполняю exec. Полный код метода :

public function permissionSetter()
    {
        if (!empty($this->foldersForRewting)){
            $paths = $this->foldersForRewting;
            foreach ($paths as $path){
                $command = 'icacls ' . ' "' . $path . '"" ' . '/inheritance:e /T';
                $this->data['messages']['execCommand'][] = $command;
                if (exec($command,$this->data['messages']['execSystem'][]))
                {
                    $this->data['messages']['execSuccess'][] = 'Разрешения на каталог: '. $path .' установлены';
                } else {
                    $this->data['messages']['execFail'][] = 'Ошибка установки разрешений: '. $path;
                }
            }
        } else {
            $this->data['messages']['errors'] = 'You try call setting permission on empty array';
        }
        return $this->data;
    }

Результат выполнения метода записываю в результирющуу переменную $data(ассоциативный массив с логами происходящего) в контроллере и отдаю обратно через echo json_encode($data); в Ajax Что я получаю в консоли, если использую Ajax:

Моя exec команда отрабатывает, но только с каталогами и файлами с ЛАТИНИЦЕЙ в названии. По всем остальным элементам массива я получаю null, и соответственно фактически exec отрабатывает только на каталогах и файлах с латиницей

Если я проделываю тоже самое без применения ajax, и просто вывожу дамп массива на страницу, напрямую из контроллера

echo <pre>;
print_r($data);
echo </pre>;

То получаю следующее

Мои exec команды выполняются на всех каталогах в папках, но в браузере я снова получаю иероглифы. (P/S полные пути в exec я оборачиваю в кавычки и слеши экранирую)

Я перепроверил кодировку всех своих файлов через notepad++, везде UTF-8 без BOM. В файле http.conf я прописал в конце AddDefaultCharset utf-8. В .htaccess в каталоге рядом с public директорией прописал AddCharset utf-8 .html .php .js .css .txt

Подскажите что я делаю не так?

READ ALSO
yii2 Авторизация по нескольким бд

yii2 Авторизация по нескольким бд

Нужно что бы при авторизации были три поля username, password, id_companyИ при авторизации id_company это был префикс базы данных

162
Как передать через AJAX одновременно изображение и несколько переменных?

Как передать через AJAX одновременно изображение и несколько переменных?

тестирую на PHP загружается ли изображение на сервер:

162
Как сделать post запрос в Laravel?

Как сделать post запрос в Laravel?

У меня сложилась такая ситуация у меня есть форма в которой нужно получить id, а потом с этой id сделать запрос в БД

169
$_POST - пустой массив, $_GET - работает нормально

$_POST - пустой массив, $_GET - работает нормально

При помощи приложения Postman проверяю следующий код:

147