为什么这在我的本地环境下工作,而在我的生产服务器上运行cpanel:
$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();
}
});
我在本地环境中没有得到任何错误,但是我的ajax响应在生产环境中导致404。为什么呢?
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调用操作之后出现)
[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
将。htaccess文件放到http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/functions/
中,其中只有以下内容
RewriteEngine Off
同样,没有RewriteBase /
声明,wordpress工作得很好:
# 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().
也许这里的瀑布测试也可能对优化有所帮助。网页测试
最后,当浏览到页面时,我注意到谷歌地图需要很长时间才能加载-仔细检查以确保它以正确的顺序加载(通常最后),并且它正在使用当前的API被正确调用。——除此之外……有时Google只是很慢,但主要是由于一些脚本问题——地图仍然可以渲染,但其他东西没有正确设置,所以脚本加载链在某些地方失败了。这也可能导致404,在WordPress等环境中,这尤其难以排除。
从Wordpress 2.6开始,函数get_bloginfo('template_directory')返回一个URI,但是你可能需要一个本地路径。尝试使用函数get_theme_root()代替。在任何情况下,如果您想检查计算机和服务器之间的ajax通信,我建议您使用网络协议分析器。我更喜欢Wireshark(它也适用于linux),但你可以选择另一个。
尝试将此添加到您的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"。然后尝试。
这在我看来像是一个用户问题-最有可能的是,在您的服务器上的文件夹中的所有文件有一个用户以外的www-data
;因此,apache
不能访问这些文件并将它们提供给您。
你可以检查相同的,并尝试使用
将username
和group
更改为www-data
cd wp-content/themes/bootstrappedWP/lib/admin/
sudo chown -r www-data:www-data functions
编辑1
我检查了你的url上的其他一些PHP
文件,它们都给出了404。例子:
- http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/shortcode_window.php
- http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/init.php
- http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/admin/kjd_fields.php
- http://sandbox.kylejenningsdesign.com/wp-content/themes/bootstrappedWP/lib/partials/image_slider_wrapper.php
在我看来,你的php文件都不工作。因此,这是PHP的一般配置错误问题,而不是该文件夹中的文件的特定问题。
你能检查你的php.ini设置(如果可访问)是否工作正常吗?另外,如果在代码中连接到任何数据库,数据库本身是否可访问?
浏览apache
日志,并发布相关部分,以便我们可以进一步调试情况。
另外,每次更改配置时不要忘记重新启动apache
。
设置下面文件夹的权限为0755,然后尝试…
/wp-content/themes/bootstrappedWP/lib/admin/functions