2014-03-30 18 views
0

为什么在我的本地环境这项工作,但404对我的生产服务器上运行的cPanel:为什么我的文件在我的本地环境中找到,但在我的cpanel服务器上是404?

$adminDir = get_bloginfo('template_directory'); 
$adminDir = $adminDir."/lib/admin/"; 
$preview_file = $adminDir.'functions/live_preview.php'; 
wp_register_script('admin', $adminDir."js/admin.js", false, '1.0'); //register script 

$wp_paths = array('template_url' => $adminDir.'functions/live_preview.php'); 
wp_localize_script('admin', 'object_name', $wp_paths); 
wp_enqueue_script("admin"); 

林不知道提供什么其他信息,本地进出口运行Ubuntu和Apache,我知道我的生产环境用apache运行一些linux的风味。我有一些JS发送一个Ajax请求的页面有问题与:

$.ajax({ 
     url: object_name.template_url, 
     type: 'POST', 
     data: { data: data }, 
     success: function(result) { 
      kjd_reload_styles(); 
     } 
    }); 

我得到我的当地环境没有错误,但在生产了404我的Ajax响应结果。这是为什么?

BUMP - 所以有问题的文件是:

http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/functions/live_preview.php 

试图击中失败为404,但如果你去到它的父目录:

http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/functions 

你可以看到上市的文件(顺便说一句,其中所有的404)。那是怎么回事?

这里是我的.htaccess文件,它看起来像标准的WordPress的.htaccess:

# BEGIN WordPress 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

添加错误日志:

,从我的cPanel的错误日志去了,这里是我发现了什么。有两种类型的日志,一种显示最近的300个日志,然后是更深入的日志。 基本只记录显示这个(事实上,这个错误现在出现了后,我的AJAX CAL行动)

[Sat Apr 19 18:30:43 2014] [error] [client 76.100.35.2] SoftException in Application.cpp:629: Directory "/home/kylejenn/public_html/sandbox/wp-content/themes/bootstrappedWP/lib" is writeable by group, referer: http://sandbox.kylejenningsdesign.com/wp-admin/admin.php?page=kjd_header_settings 

un Apr 20 15:31:49 2014] [error] [client 173.71.202.111] SoftException in Application.cpp:629: Directory "/home/kylejenn/public_html/sandbox/wp-content/themes/bootstrappedWP/lib" is writeable by group, referer: http://sandbox.kylejenningsdesign.com/wp-admin/admin.php?page=kjd_body_settings 


**The in depth error logs show:** 
[18-Apr-2014 15:15:36 UTC] WordPress database error MySQL server has gone away for query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1 made by _get_cron_lock 


[19-Apr-2014 20:04:48 UTC] WordPress database error Unknown column 'z6p9z9mlt_posts.post_type' in 'where clause' for query SELECT z6p9z9mlt_comments.* FROM z6p9z9mlt_comments WHERE comment_post_ID = '206' AND comment_approved = '1' AND z6p9z9mlt_posts.post_type NOT IN('project', 'task_list', 'task', 'milestone', 'message') ORDER BY comment_date_gmt DESC LIMIT 10 made by require('wp-blog-header.php'), wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts 
+0

是什么'object_name.template_url'返回本地和在线? – Companjo

+0

在生产中找不到文件,我甚至无法在浏览器中提取文件。但是我在本地环境中的浏览器中提取文件 – rugbert

+3

您可能需要包含您的.htaccess。可能会有一些重写将您的文件转换为404s。 – Grumpy

回答

0

这似乎对我来说,一个用户的问题 - 最有可能,该文件夹中的所有文件服务器上除www-data以外的用户;因此apache无法访问这些文件并将它们提供给您。

您可以检查相同的,并尝试改变usernamegroupwww-data使用

cd wp-content/themes/bootstrappedWP/lib/admin/ 
sudo chown -r www-data:www-data functions 

编辑1

我查了一些其他PHP文件在你的url,全部给出404个。例如:

在我看来,没有你的php文件都在工作。因此,这是一般的PHP配置错误问题,而不是该文件夹中某些特定的文件问题。

你可以检查你的php.ini设置(如果可以的话)工作正常吗?另外,如果您连接到代码中的任何数据库,数据库本身是否可访问?

通过apache日志,并发布相关部分,以便我们可以进一步调试情况。

此外,每次进行任何配置更改时都不要忘记重新启动apache

+0

我以为我昨天回复了这个,猜想它只是草拟的 - 我检查了我当地的证据,并且确实是www数据。我不能看到他们在我的生产环境中,但我的FTP客户端显示一系列数字。不确定那些代表哪个用户。不过要确定的是,我将文件权限更改为755,因此任何使用都应能够读取和执行这些文件。依然没有。生病发布我的.htaccess在我原来的文章 – rugbert

+0

@rugbert该用户是否对所有文件都相同?就像在你的FTP客户端中,你能看到一个用户是否有一组文件,另一个用户是否有另一组文件?此外,您是否在文件更改后重新启动apache? –

+0

@rugbert你的'.htaccess'看起来很好,我不认为这是问题。没有你的PHP文件的工作,检查编辑我的答案。 –

0

尝试添加到您的functions.php,

 /* 
* Allows access to Ajaxurl from Front end 
*/ 
if (!function_exists('add_ajaxurl_to_front')) { 
    function add_ajaxurl_to_front() { 
     ?> 
     <script type="text/javascript"> 
      //<![CDATA[ 
      ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
      //]]> 
     </script> 
     <?php 
    } 
} 
add_action('wp_head', 'add_ajaxurl_to_front', 1); 

然后将URL来源为 “URL:ajaxurl”。然后尝试。这将工作

1

由于Wordpress 2.6,函数get_bloginfo('template_directory')返回一个URI,但你可能需要一个本地路径。尝试使用函数get_theme_root()来代替。无论如何,如果你想检查计算机和服务器之间的Ajax通信,我建议你使用网络协议分析器。我更喜欢Wireshark(它也适用于Linux),但你可以选择另一个。

1

删除.htaccess文件到http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/functions/具有以下内容仅

RewriteEngine Off 

此外,WordPress的工作完全正常,而不RewriteBase /声明:

# BEGIN WordPress 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

我也注意到以下问题(也许相关...也许不是)

Invalid App Id: Must be a number or numeric string representing the application id. all.js:53 
FB.getLoginStatus() called before calling FB.init(). 

也许这里的瀑布测试也可能对优化有一些帮助。 Web Page Test

最后,在浏览网页的时候,我注意到谷歌地图正在采取一个很长的时间来加载 - 双重检查,以确保它加载正确的顺序(通常是最后一个),那它正在使用当前的API正确调用。 - 除此之外...有时google只是很慢,但主要是由于一些脚本问题 - 地图仍然会呈现,但其他东西没有正确设置,因此脚本的链式加载失败。这也可能导致在WordPress等环境中特别难以排除故障的404。

0

设置文件夹下面的权限为0755,然后尝试...

/wp-content/themes/bootstrappedWP/lib/admin/functions 
相关问题