Вход на сайт
Аpache и созданый js файл
NEW 11.12.14 21:25
Столкнулся со следующей проблемой: Из нескольких Js файлов при помощи php скрипта создается один js, который записывается в дирикторию с правами 777. Самому файлу задаются права 777.
Теперь проблема: Файл сервером не читается. Фактически он есть, его можно прочитать в едиторе, но для сервера он невидим. Тестировал В XAMPP
Никогда с этим не сталкивался, но могу себе представить, что это не глюк, а какие-то меры предосторожности со стороны апача.
Хотелось бы знать точно что происходит. Почему файл остается невидим?
Теперь проблема: Файл сервером не читается. Фактически он есть, его можно прочитать в едиторе, но для сервера он невидим. Тестировал В XAMPP
Никогда с этим не сталкивался, но могу себе представить, что это не глюк, а какие-то меры предосторожности со стороны апача.
Хотелось бы знать точно что происходит. Почему файл остается невидим?
NEW 12.12.14 18:08
в ответ denis55555 11.12.14 21:25
возможно такое, что страница отрпавляется раньше, чем создаётся файл и ки моменту подгрузки файла ещё нет? или файл создаётся за пределами htdocs или разрешеённых путей?
или в той папке есть .htaccess блокириющий доступ?
или в той папке есть .htaccess блокириющий доступ?
Фашизм будет разбит
Человека карают только те боги, в которых он верит
NEW 12.12.14 20:15
Файл уже существует. Тоесть он создается не каждый раз. Файл находится не за пределами htdocs Права на чтение везде 777 .htaccess нет
Еще, что самое интересное... Стоит переименовать файл, как сразу он начинает читаться...
Еще, что самое интересное... Стоит переименовать файл, как сразу он начинает читаться...
NEW 13.12.14 22:34
Ошибка то наверное какая-то глупейшая
-----
1. fopen(), fwrite(), fflush(), fclose() + плюс понимание того, что fclose() - логическое закрытие файла в программе и отличается от релеза в ОС. Плюс - антивирь...
2. Apache, насколько Я помню, в старых версиях использовал UNIX-соглашение (case sensetive) по именованию файлов.
3. Банальное кеширование Апачем содержания папки в расчете на скорое повторное обращение.
Простой вариант - создать файл с элементарным именем и содержанием, потом проверить *.js и наконец - содержание...
-----
1. fopen(), fwrite(), fflush(), fclose() + плюс понимание того, что fclose() - логическое закрытие файла в программе и отличается от релеза в ОС. Плюс - антивирь...
2. Apache, насколько Я помню, в старых версиях использовал UNIX-соглашение (case sensetive) по именованию файлов.
3. Банальное кеширование Апачем содержания папки в расчете на скорое повторное обращение.
Простой вариант - создать файл с элементарным именем и содержанием, потом проверить *.js и наконец - содержание...
14.12.14 11:22
Все тесты ни к чему не привели. Если файл создаётся в плагине джумлы, он сервером не читается. Если самым простым скриптом, всё работает. Я уже сваял 100% функцию со стиранием и перекладыванием файла.... Толку никакого. Вобщем мысли кончились. В логах апача никаких ошибок.
function file_put_contents($filename, $content) {
$temp = tempnam('/tmp', 'temp');
if (!($f = fopen($temp, 'wb'))) {
return false;
}
fwrite($f, $content);
fflush($f);
fclose($f);
if (!rename($temp, $filename)) {
unlink($filename);
rename($temp, $filename);
}
chmod($filename, 01777);
return true;
}
NEW 14.12.14 17:36
в ответ denis55555 14.12.14 12:48
А джумла работает под пользователем отличным от того, под которым вы запускаете другие скрипты? Сделайте простой тест: создайте файл джумлой и скриптом и сравните владельца. А ещё запостите сюда просто результат 'ls -l' для папки, где лежат два файла(созданный джумлой + созданный скриптом)
Кстати, а какие права и кто владелец папки, в которой вы создаёте новый файл?
Кстати, а какие права и кто владелец папки, в которой вы создаёте новый файл?
NEW 14.12.14 20:17
Джумла работает с теми же правами, что и другие скрипты. Тест делаю локально на XAMPP
drwxrwxrwx 3 slav staff 102 7 Dez 13:58 GZip
drwxrwxrwx 5 slav staff 170 7 Dez 13:58 Minify
-rw-rw-rw- 1 slav staff 44 7 Dez 13:58 _index.html
-rwxrwxrwt 1 daemon staff 317029 14 Dez 20:08 combined.css не читается
-rwxrwxrwt 1 daemon staff 558109 14 Dez 20:08 combined.js не читается
drwxrwxrwx 4 slav staff 136 7 Dez 13:58 language
-rw-rw-rw- 1 slav staff 328 14 Dez 20:08 links.ini
-rw-rw-rw- 1 slav staff 7801 14 Dez 20:07 optimizejscss.php
-rw-rw-rw-@ 1 slav staff 1291 14 Dez 19:55 optimizejscss.xml
-rwxrwxrwt 1 daemon staff 558109 14 Dez 20:09 sozdanyj_skriptom.js читается
-rwxrwxrwx@ 1 slav staff 431 14 Dez 20:04 test.php тестовый скрипт
NEW 14.12.14 20:43
в ответ denis55555 14.12.14 11:22
Если файл создаётся в плагине джумлы, он сервером не читается.
Если самым простым скриптом, всё работает.
-----
Мысли:
1. Джумла как-то кеширует директрию и добавления просто не видит.
2. fopen()...fclose() в джумле работают не так как везде...
Первое - не знаю - надо глубоко рыть...
По второму - Я бы добавил задержку на полсекунды+ после задания прав...
Такой вопрос - если после отработки скрипта (т.е. после 404) перезагрузить апача он что-то найдет? Проверка на кеширорку...
Если самым простым скриптом, всё работает.
-----
Мысли:
1. Джумла как-то кеширует директрию и добавления просто не видит.
2. fopen()...fclose() в джумле работают не так как везде...
Первое - не знаю - надо глубоко рыть...
По второму - Я бы добавил задержку на полсекунды+ после задания прав...
Такой вопрос - если после отработки скрипта (т.е. после 404) перезагрузить апача он что-то найдет? Проверка на кеширорку...
NEW 14.12.14 21:40
Правильно ли я понимаю, что в браузере открывается ссылка:
http://localhost/joomla/sozdanyj_skriptom.js
но не открывается с кодом 404 следующая ссылка:
http://localhost/joomla/combined.css
?
Или что вы имеете ввиду под словами "он сервером не читается"?
Добавил: что ещё стоит попробывать:
1) в браузе почистить кэш
2) попробуйте 'wget http://localhost/joomla/combined.css'. тоесть минуя браузер. Тоже 404?
http://localhost/joomla/sozdanyj_skriptom.js
но не открывается с кодом 404 следующая ссылка:
http://localhost/joomla/combined.css
?
Или что вы имеете ввиду под словами "он сервером не читается"?
Добавил: что ещё стоит попробывать:
1) в браузе почистить кэш
2) попробуйте 'wget http://localhost/joomla/combined.css'. тоесть минуя браузер. Тоже 404?