Get работает направильно

yaushev
На сайте с 02.11.2012
Offline
27
966

Уважаемые умы, подскажите направление, ибо я запутался и не знаю куда копать.

На днях перенес сайт с одной машины на другую. Практически все продублировал на новом серверe.

Веб-сервер вида (связка) - apache (для php) + nginx (статика)+mysql + php 5.4

Попросил местных админов (хостера) поставить LAMP, остальное доработал руками. По началу порадовался, ибо все работало без единой зацепки, но потом один косячок таки всплыл. Почему то на DLE сайте косячно/неполно/одинестьдругойнет перестали передаваться GET через URL.

DLE 10.1, Тип ЧПУ - 1, остальные настройки по умолчанию.

По факту, в адресной строке я вижу все что передаю через <_form action="GET"_>, но через $_GET их вытянуть не получается, или из 3-4 переменных тянется всего один (это вообще непонятно, если бы не работало, то полностью, а тут один передался, другой нет)

Все это при заявленном QSA флаге в htaccess (который разрешает передачу GET, POST и т.д.).

Подскажите, я уже голову сломал. Любые мнения приветствуются, необходимый код по запросу кину/предоставлю.

Такое ощущение, что по пути часть GET просто проглатывается (и, кстати, это только в одном месте). Или какого то модуля php не хватает.

Быстрые ответы:

- мод_реврайт включен,

- Да, исполнение htaccess разрешено в конфиге апача,

- Нет, я не передаю мегабайты символов методом GET (и ведь раньше все работало!).

---------- Добавлено 21.10.2014 в 19:56 ----------

Если дело в каком-то модуле, то вот список:

root@localhost:~# php -m


bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
ereg
exif
ffmpeg
fileinfo
filter
ftp
gd
gettext
hash
iconv
ionCube Loader
json
libxml
mbstring
mcrypt
memcache
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
phalcon
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
XCache
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]
XCache
the ionCube PHP Loader

Правило в htaccess:
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L,QSA]

Конфиг:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
ServerName sayt.ru
ServerAlias www.sayt.ru
DocumentRoot /home/www/
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
siv1987
На сайте с 02.04.2009
Offline
427
#1

Нигде ничего не "проглатывается", как обычно всегда дело в руках. Вы изначально не правильно подошли к проблеме. Начали с дле, продолжили с мод_реврайт, а в сабже говорите что не передаются ГЕТ параметры на сервер. Если следовать сабжу, то нужно создать простой скрипт с кодом print_r($_GET) и отправить к нему запрос с GET параметрами. Потом, таким же образом, продебажить параметры в своем скрипте отправив GET параметры, и в конце проверить работу своего реврайта.

yaushev
На сайте с 02.11.2012
Offline
27
#2
siv1987:
Начали с дле

Да, ибо ЧПУ DLE режет GET. Вдруг...

siv1987:
продолжили с мод_реврайт

Тут тоже может крыться проблема, ибо по умолчанию он был выключен, поднимал руками.

siv1987:
не передаются ГЕТ параметры на сервер

Не совсем так, передаются частично... упоминал.

Как проверить работу реврайта? ЧПУ 1,2,3 прошли проверку и работают.

---------- Добавлено 21.10.2014 в 20:21 ----------

И коллеги, почему может не работать - bcpow? На это грешу тоже.

При вычислении используется эта функция:

пример $st=bcpow($srp, $sr, 10); (возведение в степень)

Отличается ли синтаксис в 5.3 и 5.4 php?

siv1987
На сайте с 02.04.2009
Offline
427
#3
yaushev:
Не совсем так, передаются частично... упоминал.

Так передаются или передаются частично? Тут стоит спросить, а каким образом вы это проверяли?

yaushev:
Да, ибо ЧПУ DLE режет GET. Вдруг...

ЧПУ дле ничего не режет. Он сам на $_GET массиве работает, ибо у него реврайты пишутся отдельно для каждого адреса, а не парсится скриптом.

yaushev
На сайте с 02.11.2012
Offline
27
#4
siv1987:
Так передаются или передаются частично? Тут стоит спросить, а каким образом вы это проверяли?


ЧПУ дле ничего не режет. Он сам на $_GET массиве работает, ибо у него реврайты пишутся отдельно для каждого адреса, а не парсится скриптом.

Вы в некотором роде навели меня на верный путь :)

$st=bcpow($srp, $sr, 10); - где тут неправильно?

echo $st - показывает ноль...а так быть не должно.

siv1987
На сайте с 02.04.2009
Offline
427
#5

var_dump($srp, $sr, 10); покажет вам почему $st - показывает ноль. PHP он такой, нетипизированный язык.

yaushev
На сайте с 02.11.2012
Offline
27
#6
siv1987:
var_dump($srp, $sr, 10); покажет вам почему $st - показывает ноль. PHP он такой, нетипизированный язык.

ответ адекватный: float(1,0175) string(2) "40" int(10)

Значит синтаксис!?

yaushev
На сайте с 02.11.2012
Offline
27
#7

Видимо в php 5.3 (эта версия до переезда на новый сервер, сейчас 5.4) переваривал мой корявый код.

float(1,0175) string(2) "40" int(10)

Ошибка связана с запятой в нецелом числе. Если там будет стоять точка,то все работает. Умы, подскажите, в настройках php можно что-то подкрутить по этому поводу или придется искусственно менять запятую на точку? Кстати, если поможет только замена, то как это реализовать?

J
На сайте с 20.02.2014
Offline
120
jkm
#8

Подвох в том, что на преобразование float в string влияют региональные настройки то бишь локаль.

Помочь может setlocale или number_format.

yaushev
На сайте с 02.11.2012
Offline
27
#9
jkm:
Подвох в том, что на преобразование float в string влияют региональные настройки то бишь локаль.
Помочь может setlocale или number_format.

Спасибо, воспользовался number_format.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий