pjax по-прежнему выполняет полную перезагрузку страницы

Я пробовал примеры pjax в chrome и firefox, я взял образец кода и поместил его в свое собственное приложение, но он все еще полностью перезагружает страницу. Запрос AJAX происходит, после чего страница перемещается без обновления основного блока #


    
        
        


         
    
    
        11:59:36        

    

. Я пробовал несколько методов для вызова pjax, и, может быть, кто-то еще мог бы указать, где я ошибаюсь? Кажется, что Ajax/GET нормально возвращается в консоли firebug -, это пример моего php, который выдает ответ pjax

public function total_posts(){
        // print_r($_SERVER);

        if (!isset($_SERVER["X_PJAX"])) {
            $this->load->view('stats/pjax_stats/header');
            $this->load->view('stats/pjax_stats/links');
        }else{
            echo "pjax";//add in for debug
        }

        echo "total posts";

        if (!isset($_SERVER['X-PJAX'])) {
            $this->load->view('stats/pjax_stats/footer');
        }



    }

Жук?

Кажется, в последней версии есть ошибка, из-за которой переменная добавления в конец URL-адреса, на который делается запрос ajax, имеет вид _pjax=container вместо _pjax=true

-. 121 ---1009753-

Кросс-компиляция PHP с UCLIBCЭТО РЕПОСТ, ПРЕДЫДУЩИЙ ПОСТ БЫЛ ЗАКРЫТ, ПЕРЕМЕЩЕН НА SERVERFAULT И СНОВА ЗАКРЫТ. Я думаю, что этот пост является действительной проблемой stackoverflow, потому что я думаю, что это вызвано какой-то ошибкой automake/compile/linking....

ЭТО РЕПОСТ, ПРЕДЫДУЩИЙ ПОСТ БЫЛ ЗАКРЫТ, ПЕРЕМЕЩЕН НА SERVERFAULT И СНОВА ЗАКРЫТ.Я думаю, что этот пост является действительной проблемой stackoverflow, потому что я думаю, что это вызвано какой-то ошибкой automake/compile/linking. Это проблема программирования, а не проблема администратора сервера.

Кросс-компиляция PHP

https://serverfault.com/questions/418521/cross-compile-php

Начало поста

Я скачал исходный код PHP 5.4.0, распаковал его и переместил в исходную папку.

Я делаю настройку с помощью:

./configure --build=x86_64-unknown-linux-gnu --host=arm-linux-uclibcgnueabi --prefix=/usr/arm/www CC="arm-linux-uclibcgnueabi-gcc --sysroot=/toolchains/gnu_cortex-a9_tools/"  --disable-libxml --disable-dom  --without-iconv --without-openssl --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear --without-sqlite3 --disable-pdo --without-pdo-sqlite --disable-phar  --with-config-file-path=/etc/

Вслед за

make

ошибок нет, все работает. Затем я делаю установку.

make install

Опять все работает нормально. я перемещаю его на целевую платформу и запускаю

/usr/arm/www/bin/php -v
PHP 5.4.0 (cli) (built: Aug 15 2012 16:07:41) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

Я тестирую простую домашнюю страницу с помощью своего веб-сервера и непосредственно с помощью php.


# php index.php
hello

он работает так, как ожидалось. следующий тест:

$output
"; ?>

о нет~

# php shell.php 

Segmentation fault

Тестирую другой скрипт:

#!/bin/php

Тот же результат:

# php index.php 
helloSegmentation fault

у меня есть php.ini?

# /usr/arm/www/bin/php --ini
Configuration File (php.ini) Path: /etc/
Loaded Configuration File:         /etc/php.ini

да и отключенных функций нет. тестирование strace /usr/arm/www/bin/php index.php

lstat("/srv/www/info.txt", {st_mode=S_IFREG|0644, st_size=20,...}) = 0
open("/srv/www/info.txt", O_RDONLY)     = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=20,...}) = 0
lseek(3, 10, SEEK_CUR)                  = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

файл info.txt существует, и у него есть разрешение на чтение/запись в него.

Тестирование strace /usr/arm/www/bin/php shell.php

fcntl64(3, F_GETFL)                     = 0 (flags O_RDONLY)
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7e31fddc) = -1 EINVAL (Invalid argument)
vfork()                                 = 3324
close(4)                                = 0
fstat(3, {st_mode=S_IFIFO|0600, st_size=0,...}) = 0
read(3, "total 24\n-rw-rw-r--    1 1001    "..., 8192) = 468
read(3, ""..., 8192)                    = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
close(3)                                = 0
wait4(3324, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 3324
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

если я запускаю index.php через gdb, это дает мне:

Starting program: /usr/arm/www/bin/php index.php
hello
Program received signal SIGSEGV, Segmentation fault.
zend_do_fcall_common_helper_SPEC (execute_data=0x2ac7a040) at /home/maiden/Downloads/php-5.4.0/Zend/zend.h:391
391 /home/maiden/Downloads/php-5.4.0/Zend/zend.h: No such file or directory.
    in /home/maiden/Downloads/php-5.4.0/Zend/zend.h

gdb дает мне это из shell.php Запуск программы :/usr/arm/www/bin/php shell.php

Program received signal SIGSEGV, Segmentation fault.

zend_do_fcall_common_helper_SPEC (execute_data=0x2ab76040) at /home/maiden/Downloads/php-5.4.0/Zend/zend.h:391
391 in /home/maiden/Downloads/php-5.4.0/Zend/zend.h

zend.h находится в /usr/arm/www/include/php/Zend/ очевидно, что-то пошло не так во время кросс-компиляции. что я пропустил? я не нахожу никакого флага конфигурации, чтобы исправить это, и создание символической ссылки в нужное место удаляет вывод gdb, но php все еще segfaults.

Спасибо за любую помощь!

ОБНОВЛЕНИЕ:

# valgrind php test.php
==2181== Memcheck, a memory error detector
==2181== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==2181== Using Valgrind-3.8.0 and LibVEX; rerun with -h for copyright info
==2181== Command: php test.php
==2181==
==2181== Conditional jump or move depends on uninitialised value(s)
==2181==    at 0x4004EC8: ??? (in /lib/ld-uClibc-0.9.30-nptl.so)
==2181==
==2181== Invalid read of size 4
==2181==    at 0x4004D48: _dl_get_ready_to_run (in /lib/ld-uClibc-0.9.30-nptl.so)
==2181==  Address 0x7d4cc304 is just below the stack ptr.  To suppress, use: --workaround-gcc296-bugs=yes
==2181==
==2181== Invalid read of size 4
==2181==    at 0x48C348C: __uClibc_main (in /lib/libuClibc-0.9.30-nptl.so)
==2181==  Address 0x7d4cc554 is just below the stack ptr.  To suppress, use: --workaround-gcc296-bugs=yes
==2181==
==2181== Invalid write of size 4
==2181==    at 0x233010: __eqdf2 (ieee754-df.S:1120)
==2181==  Address 0x7d4cb0bc is just below the stack ptr.  To suppress, use: --workaround-gcc296-bugs=yes
==2181==
Warning: shell_exec(): Unable to execute 'ls -lart' in /test.php on line 3
==2181== Invalid read of size 4
==2181==    at 0x1FF1AC: zend_do_fcall_common_helper_SPEC (zend.h:391)
==2181==    by 0x1F3D17: execute (zend_vm_execute.h:410)
==2181==    by 0x18B217: zend_execute_scripts (zend.c:1279)
==2181==    by 0x1365BB: php_execute_script (main.c:2473)
==2181==    by 0x22B52B: do_cli (php_cli.c:988)
==2181==    by 0x22BD4B: main (php_cli.c:1364)
==2181==  Address 0x8 is not stack'd, malloc'd or (recently) free'd
==2181==
Segmentation fault

Обновление2

re -запустил valgrind с memcheck, получил примерно тот же результат, что и раньше, но это было новым:

php: can't resolve symbol '__libc_freeres'

Обновление3

В то время как valgrind подвел меня, я продолжил с gdb, я создал папку /home/maiden/..etc в моей целевой системе и скопировал содержимое моей папки php/include и повторно -запустил gdb. теперь я получаю это сообщение об ошибке:

(gdb) run index.php 
Starting program: /bin/php index.php
hello
Program received signal SIGSEGV, Segmentation fault.
zend_do_fcall_common_helper_SPEC (execute_data=0x2ab34040) at /home/maiden/Downloads/php-5.4.5/Zend/zend.h:391
warning: Source file is more recent than executable.
391     return --pz->refcount__gc;

это очень похоже на то, что sixeightzero написал вчера в комментариях. Сейчас я попробовал PHP версии 5.3.5, 5.4.0, 5.4.5 с той же ошибкой на всех.

Обновление4

Я загрузил новую цепочку инструментов для glibc, перекрестно скомпилировал новый busybox с glibc, создал chroot-тюрьму, перекрестно скомпилировал php с glibc вместо uclibc и протестировал его в моей chroot-тюрьме на моем uclibc-боксе, и он работает! Но мне все еще нужно, чтобы php работал в моей среде uclibc....

9
задан Community 23 May 2017 в 12:20
поделиться