русский
Germany.ruForen → Архив Досок→ Webdesign und Hosting

Аpache и созданый js файл

348  1 2 alle
denis55555 прохожий11.12.14 21:25
NEW 11.12.14 21:25 
Столкнулся со следующей проблемой: Из нескольких Js файлов при помощи php скрипта создается один js, который записывается в дирикторию с правами 777. Самому файлу задаются права 777.
Теперь проблема: Файл сервером не читается. Фактически он есть, его можно прочитать в едиторе, но для сервера он невидим. Тестировал В XAMPP
Никогда с этим не сталкивался, но могу себе представить, что это не глюк, а какие-то меры предосторожности со стороны апача.
Хотелось бы знать точно что происходит. Почему файл остается невидим?
#1 
gendy Dinosaur12.12.14 18:08
gendy
NEW 12.12.14 18:08 
in Antwort denis55555 11.12.14 21:25
возможно такое, что страница отрпавляется раньше, чем создаётся файл и ки моменту подгрузки файла ещё нет? или файл создаётся за пределами htdocs или разрешеённых путей?
или в той папке есть .htaccess блокириющий доступ?

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#2 
denis55555 прохожий12.12.14 20:15
NEW 12.12.14 20:15 
in Antwort gendy 12.12.14 18:08, Zuletzt geändert 12.12.14 20:27 (denis55555)
Файл уже существует. Тоесть он создается не каждый раз. Файл находится не за пределами htdocs Права на чтение везде 777 .htaccess нет
Еще, что самое интересное... Стоит переименовать файл, как сразу он начинает читаться...
#3 
Poiser местный житель12.12.14 20:48
Poiser
NEW 12.12.14 20:48 
in Antwort denis55555 12.12.14 20:15
Может file stream остаётся открытым после создания?
fclose() в конце вызывается?
Создание сайтов, онлайн-магазинов в Германии
#4 
denis55555 гость12.12.14 22:28
NEW 12.12.14 22:28 
in Antwort Poiser 12.12.14 20:48
Используется фуинкция file_put_contents и всё. Да, если файл переименовать обратно, то он снова сервером не читается. Именно сервером, в едиторе все замечательно читается.
#5 
Poiser местный житель12.12.14 22:34
Poiser
NEW 12.12.14 22:34 
in Antwort denis55555 12.12.14 22:28
А что сервер отдаёт 404 или 500?
Создание сайтов, онлайн-магазинов в Германии
#6 
project33 коренной житель12.12.14 23:48
project33
NEW 12.12.14 23:48 
in Antwort denis55555 12.12.14 20:15
В ответ на:
Стоит переименовать файл, как сразу он начинает читаться

что за имя? может стоит сразу другое дать...
Продвижение сайтов, реклама: https://www.pro33.net
#7 
denis55555 гость13.12.14 13:14
13.12.14 13:14 
in Antwort Poiser 12.12.14 22:34
Ошибка 404
Пробовал называть тоже как угодно. Не читается
#8 
Валидол коренной житель13.12.14 13:31
NEW 13.12.14 13:31 
in Antwort denis55555 11.12.14 21:25
Кодировка или какие нибудь невидимые символы? (\n, \r)
#9 
denis55555 гость13.12.14 15:12
NEW 13.12.14 15:12 
in Antwort Валидол 13.12.14 13:31
Удалось немного ограничить ошибку. Вобщем, если файл создается при помощи плагина джумлы, он почему-то не читается. Если независимым скриптом, причём в тойже директории, то все читается. Ошибка то наверное какая-то глупейшая
#10 
  Posmotrim знакомое лицо13.12.14 21:07
Posmotrim
NEW 13.12.14 21:07 
in Antwort denis55555 13.12.14 15:12
ну а в логе апача поглядеть не судьба?
#11 
Murr патриот13.12.14 22:34
Murr
NEW 13.12.14 22:34 
in Antwort denis55555 13.12.14 15:12, Zuletzt geändert 13.12.14 22:39 (Murr)
Ошибка то наверное какая-то глупейшая
-----
1. fopen(), fwrite(), fflush(), fclose() + плюс понимание того, что fclose() - логическое закрытие файла в программе и отличается от релеза в ОС. Плюс - антивирь...
2. Apache, насколько Я помню, в старых версиях использовал UNIX-соглашение (case sensetive) по именованию файлов.
3. Банальное кеширование Апачем содержания папки в расчете на скорое повторное обращение.
Простой вариант - создать файл с элементарным именем и содержанием, потом проверить *.js и наконец - содержание...
#12 
denis55555 гость14.12.14 11:22
14.12.14 11:22 
in Antwort Murr 13.12.14 22:34, Zuletzt geändert 14.12.14 11:32 (denis55555)
Все тесты ни к чему не привели. Если файл создаётся в плагине джумлы, он сервером не читается. Если самым простым скриптом, всё работает. Я уже сваял 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;
}


#13 
  Posmotrim знакомое лицо14.12.14 11:56
Posmotrim
NEW 14.12.14 11:56 
in Antwort denis55555 14.12.14 11:22
Странно получать 404 и не иметь в логах сообщений об ошибках. Может быть вы смотрите не в тех файлах?
#14 
denis55555 гость14.12.14 12:48
NEW 14.12.14 12:48 
in Antwort Posmotrim 14.12.14 11:56
В аccess_log есть сообщение об ошибке, но такое сообщение я вижу и в окне браузера
#15 
  Posmotrim знакомое лицо14.12.14 17:36
Posmotrim
NEW 14.12.14 17:36 
in Antwort denis55555 14.12.14 12:48
А джумла работает под пользователем отличным от того, под которым вы запускаете другие скрипты? Сделайте простой тест: создайте файл джумлой и скриптом и сравните владельца. А ещё запостите сюда просто результат 'ls -l' для папки, где лежат два файла(созданный джумлой + созданный скриптом)
Кстати, а какие права и кто владелец папки, в которой вы создаёте новый файл?
#16 
denis55555 гость14.12.14 20:17
NEW 14.12.14 20:17 
in Antwort Posmotrim 14.12.14 17:36, Zuletzt geändert 14.12.14 20:20 (denis55555)
Джумла работает с теми же правами, что и другие скрипты. Тест делаю локально на 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 тестовый скрипт


#17 
Murr патриот14.12.14 20:43
Murr
NEW 14.12.14 20:43 
in Antwort denis55555 14.12.14 11:22
Если файл создаётся в плагине джумлы, он сервером не читается.
Если самым простым скриптом, всё работает.
-----
Мысли:
1. Джумла как-то кеширует директрию и добавления просто не видит.
2. fopen()...fclose() в джумле работают не так как везде...
Первое - не знаю - надо глубоко рыть...
По второму - Я бы добавил задержку на полсекунды+ после задания прав...
Такой вопрос - если после отработки скрипта (т.е. после 404) перезагрузить апача он что-то найдет? Проверка на кеширорку...
#18 
Murr патриот14.12.14 20:46
Murr
NEW 14.12.14 20:46 
in Antwort Murr 14.12.14 20:43
Да, пока не забыл... Бред, конечно, но... попробуй дописать в конец файла 0х1А
#19 
  Posmotrim знакомое лицо14.12.14 21:40
Posmotrim
NEW 14.12.14 21:40 
in Antwort denis55555 14.12.14 20:17, Zuletzt geändert 14.12.14 21:51 (Posmotrim)
Правильно ли я понимаю, что в браузере открывается ссылка:
http://localhost/joomla/sozdanyj_skriptom.js
но не открывается с кодом 404 следующая ссылка:
http://localhost/joomla/combined.css
?
Или что вы имеете ввиду под словами "он сервером не читается"?
Добавил: что ещё стоит попробывать:
1) в браузе почистить кэш
2) попробуйте 'wget http://localhost/joomla/combined.css'. тоесть минуя браузер. Тоже 404?
#20 
1 2 alle