код хорошо работает на локальном хосте, но не на живом сайте

В качестве cms использую wordpress. Мне нужно предлагать загрузку zip-файла [зарегистрированным пользователям] для каждого сообщения, содержащего все изображения, прикрепленные к сообщению. Приведен код только из основного файла "gallery-zip.php" ( исходный код и остальные файлы здесь). Проблема в том, что он работает только на локальном хосте, а НЕ на живом сервере.

КОД ПЛАГИНА :

<?php

namespace GalleryZip;

add_action( 'plugins_loaded', __NAMESPACE__ . '\gallery_zip_start', 10, 0 );

/**
* Invoke the plugin and load the needed classes
*/
function gallery_zip_start() {
// simple autoloader
$classes = glob( dirname( __FILE__ ) . '/classes/*.php' );

if ( ! empty( $classes ) ) {
foreach ( $classes as $class )
require_once $class;


add_action( 'init', __NAMESPACE__ . '\add_hooks', 10, 0 );
add_action( 'init', __NAMESPACE__ . '\enqueue_scripts', 10, 0 );

if ( is_admin() )
return;

// this is only needed on the frontend
GalleryZip::get_instance( new GalleryZip_DataContainer() );

}
}

/**
* Adding the needed hooks
*/
function add_hooks() {
add_action( 'wp_ajax_get_galleryzip', __NAMESPACE__ . '\get_gallery_zip', 10, 0 );
add_action( 'wp_ajax_nopriv_get_galleryzip', __NAMESPACE__ . '\get_gallery_zip', 10, 0 );
}

/**
* Enqueu the JavaScript
*/
function enqueue_scripts() {
// load minified version if SCRIPT_DEBUG is true
$min = ( defined( 'SCRIPT_DEBUG' ) && true == SCRIPT_DEBUG ) ? '' : '.min';
wp_enqueue_script(
'gallery-zip',
plugins_url(
sprintf( 'js/gallery_zip%s.js', $min ),
__FILE__
),
array( 'jquery' ),
false,
true
);

// set JS object with params
wp_localize_script( 'gallery-zip', 'GalleryZip', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}

/**
* Ajax callback for creating the zip-file and sending the url to zip-file
*/
function get_gallery_zip() {
$send_result = function( $result = '' ) {
if ( is_array( $result ) )
$result = var_export( $result, true );

header( 'Content-type: application/json' );
die( json_encode( array( 'result' => $result ) ) );
};

$post_id = (int) filter_input( INPUT_POST, 'post_id', FILTER_SANITIZE_NUMBER_INT );
$gallery_id = (int) filter_input( INPUT_POST, 'gallery_id', FILTER_SANITIZE_NUMBER_INT );

if ( 0 >= $post_id )
$send_result( var_export( $_POST, true ) );

$images = GalleryZip::get_images_ajax_callback( $post_id, $gallery_id );
$send_result( $images );
}

СРЕДА ТЕСТИРОВАНИЯ :

  1. LOCALHOST: Работает на PHP 5.3.10 и последней версии WordPress 3.6.1.
  2. РЕАЛЬНЫЙ САЙТ: Работает на PHP 5.3.27 и на последней версии WordPress 3.6.1.

Что я пробовал и делал. Я протестировал плагин на своем локальном хосте с последними версиями wordpress 3.6.1 и PHP 5.3.10 и использовал эту строку кода в шаблоне single.php <?php echo do_shortcode('[gallery]'); ?>. Он предлагал хорошую ссылку для загрузки в формате zip «Получить как Zip» по щелчку, и все было безупречно.

Как только я установил плагин на свой живой сайт, он выдал ошибку, так как сайт использовал старую версию PHP 5.2 и, в частности, из-за синтаксиса пространства имен в первой строке кода плагина - namespace GalleryZip;, поэтому в первую очередь я обновил PHP-версия.

Теперь, когда он работает на действующем сайте, он отображает ссылку «GalleryZip», как и ожидалось, но ссылка не предлагает zip-загрузку, а при нажатии и просто обновляет страницу.

Чтобы исключить основные вещи, которые я тестировал в последних браузерах Firefox, Chrome и Safari, они работают, как и ожидалось, на локальном хосте, а не на живом сайте. Связано с Wordpress: я изменил тему на двадцать тринадцать по умолчанию (попробовал внутри и вне цикла), а также отключил все остальные плагины, результат не изменился.

Консоль Firebug отображает http://website.com/wp-admin/admin-ajax.php 200 OK при нажатии на ссылку, даже на работающем сайте. Я также обратился за помощью несколько недель назад к первоначальному разработчику, но пока не получил никакого ответа. Итак, если вы можете, взгляните на код и дайте мне знать, можно ли это решить, или поправьте меня, если я где-то ошибаюсь. Также, пожалуйста, дайте мне знать, если я обязательно должен спросить об этом где-то еще. Хотя я постоянно тестирую и делаю все возможное, небольшая помощь всегда приветствуется.


person gurung    schedule 30.09.2013    source источник
comment
Ваш журнал ошибок PHP говорит что-нибудь полезное? Есть ли у вашего приложения права на создание каталога кеша? Памяти не хватает?   -  person Ken Y-N    schedule 30.09.2013
comment
@Ken YN Что касается ошибок - вообще не нашел ничего полезного или актуального. Плагин создает папку при установке «galleryzip-cache», и в настоящее время установлен набор разрешений 001, и в каталоге ничего нет. Я думаю, что ничего не заканчивается, поскольку я не мог видеть такого уведомления нигде, включая журнал ошибок.   -  person gurung    schedule 30.09.2013
comment
@KenY-N Я изменил разрешения на 777, и это сработало отлично. Спасибо, что указали мне правильно. Вопрос. Какое разрешение вы бы посоветовали ему установить, чтобы сделать его немного безопасным. И также, пожалуйста, напишите это как ответ, чтобы я мог принять.   -  person gurung    schedule 30.09.2013
comment
@IqbalMalik спасибо за предложение. Я установил его на 775 сейчас.   -  person gurung    schedule 30.09.2013


Ответы (1)


Пожалуйста, укажите 775 для каталога, в который вы загружаете изображения. 777 чрезвычайно опасен.

person Iqbal Malik    schedule 30.09.2013