Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Customising the CMS

Error when sharing site content with Facebook


Reply

5 Posts   2324 Views

Avatar
nzpete

8 March 2009 at 1:20pm Community Member, 4 Posts

I've recently put a client's SilverStripe website live ([url]http://www.neonsleep.com/[/url]); developing it was a dream with SilverStripe, thank you for open-sourcing such a great piece of software!

I have one unresolved issue, to do with sharing content with Facebook (through an AddThis button). About 50 percent of the time, it works fine, Facebook downloads the shared page OK and finds the appropriate image to share. The other 50 percent, SilverStripe errors when Facebook tries to access the page, and the summary it comes up with instead is:

: syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /www/virtual/neonsleep.com/htdocs/sapphire/core/ManifestBuilder.php on line 35

It appears it doesn't like the declaration 'static $restrict_to_modules = array();', the first thing in the ManifestBuilder class (I'm using v2.2.2). When a page refuses to load, it will keep doing it unless the URL to share is changed by adding a slash at the end - sometimes that fixes it.

An example of a page that doesn't load is: [url]http://www.neonsleep.com/dandeacon/19[/url]
One that successfully loads: [url]http://www.neonsleep.com/dandeacon/20[/url]

I can't find any method to the madness. Has anyone else had problems with sharing Facebook content?

Thanks!

Peter

Avatar
nzpete

12 March 2009 at 11:27am (Last edited: 12 March 2009 11:29am), Community Member, 4 Posts

I did some logging of the requests from Facebook, I've found out some more info. They appear to have two servers that do the external requests, 69.63.178.250 that executes requests successfully from www.neonsleep.com, and 69.63.178.247 which always fails with the error above. I dumped the contents of $_REQUEST and $_SERVER, and the servers differ slightly in their requests:

.250 (the working server), sends requests like:

$_REQUEST['url'] = /doilookthin/30
$_SERVER[REDIRECT_STATUS] = 200
$_SERVER[HTTP_USER_AGENT] = facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
$_SERVER[HTTP_ACCEPT_ENCODING] = gzip
$_SERVER[HTTP_HOST] = www.neonsleep.com
$_SERVER[HTTP_ACCEPT] = text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
$_SERVER[HTTP_CONNECTION] = keep-alive
$_SERVER[CONTENT_TYPE] = application/x-www-form-urlencoded
$_SERVER[PATH] = /usr/local/apache_php5/sbin:/usr/bin:/bin
$_SERVER[SERVER_SIGNATURE] =
$_SERVER[SERVER_SOFTWARE] = Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.8c PHP/5.2.4
$_SERVER[SERVER_NAME] = www.neonsleep.com
$_SERVER[SERVER_ADDR] = 60.234.4.41
$_SERVER[SERVER_PORT] = 80
$_SERVER[REMOTE_ADDR] = 69.63.178.250
$_SERVER[DOCUMENT_ROOT] = /www/virtual/neonsleep.com/htdocs
$_SERVER[SERVER_ADMIN] = webmaster@neonsleep.com
$_SERVER[SCRIPT_FILENAME] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[REMOTE_PORT] = 36769
$_SERVER[REDIRECT_QUERY_STRING] = url=/doilookthin/30
$_SERVER[REDIRECT_URL] = /doilookthin/30
$_SERVER[GATEWAY_INTERFACE] = CGI/1.1
$_SERVER[SERVER_PROTOCOL] = HTTP/1.1
$_SERVER[REQUEST_METHOD] = GET
$_SERVER[QUERY_STRING] = url=/doilookthin/30
$_SERVER[REQUEST_URI] = /doilookthin/30
$_SERVER[SCRIPT_NAME] = /sapphire/main.php
$_SERVER[REQUEST_TIME] = 1236809221
$_SERVER[argv] = Array
$_SERVER[argc] = 1

.247 (the non-working server), sends requests like:

$_REQUEST['url'] = /doilookthin/20
$_SERVER[REDIRECT_UNIQUE_ID] = HNk2xKwQZC0AADLIgbQAAABF
$_SERVER[REDIRECT_STATUS] = 200
$_SERVER[UNIQUE_ID] = HNk2xKwQZC0AADLIgbQAAABF
$_SERVER[HTTP_USER_AGENT] = facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
$_SERVER[HTTP_ACCEPT_ENCODING] = gzip
$_SERVER[HTTP_HOST] = www.neonsleep.com
$_SERVER[HTTP_ACCEPT] = text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
$_SERVER[HTTP_CONNECTION] = keep-alive
$_SERVER[CONTENT_TYPE] = application/x-www-form-urlencoded
$_SERVER[PATH] = /usr/local/bin:/usr/bin:/bin
$_SERVER[SERVER_SIGNATURE] = <address>Apache/2.2.3 (Debian) PHP/4.4.7 mod_ssl/2.2.3 OpenSSL/0.9.8c Server at www.neonsleep.com Port 80</address>

$_SERVER[SERVER_SOFTWARE] = Apache/2.2.3 (Debian) PHP/4.4.7 mod_ssl/2.2.3 OpenSSL/0.9.8c
$_SERVER[SERVER_NAME] = www.neonsleep.com
$_SERVER[SERVER_ADDR] = 219.88.240.130
$_SERVER[SERVER_PORT] = 80
$_SERVER[REMOTE_ADDR] = 69.63.178.247
$_SERVER[DOCUMENT_ROOT] = /www/virtual/neonsleep.com/htdocs
$_SERVER[SERVER_ADMIN] = webmaster@neonsleep.com
$_SERVER[SCRIPT_FILENAME] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[REMOTE_PORT] = 43559
$_SERVER[REDIRECT_QUERY_STRING] = url=/doilookthin/20
$_SERVER[REDIRECT_URL] = /doilookthin/20
$_SERVER[GATEWAY_INTERFACE] = CGI/1.1
$_SERVER[SERVER_PROTOCOL] = HTTP/1.1
$_SERVER[REQUEST_METHOD] = GET
$_SERVER[QUERY_STRING] = url=/doilookthin/20
$_SERVER[REQUEST_URI] = /doilookthin/20
$_SERVER[SCRIPT_NAME] = /sapphire/main.php
$_SERVER[PATH_TRANSLATED] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[argv] = Array
$_SERVER[argc] = 1

I've tried contacting Facebook for help, but of course it's impossible to get any support out of a business that large.

Avatar
nzpete

12 March 2009 at 11:28am Community Member, 4 Posts

I did some logging of the requests from Facebook, I've found out some more info. They appear to have two servers that do the external requests, 69.63.178.250 that executes requests successfully from www.neonsleep.com, and 69.63.178.247 which always fails with the error above. I dumped the contents of $_REQUEST and $_SERVER, and the servers differ slightly in their requests:

.250 (the working server), sends requests like:

$_REQUEST[url] = /doilookthin/30
$_SERVER[REDIRECT_STATUS] = 200
$_SERVER[HTTP_USER_AGENT] = facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
$_SERVER[HTTP_ACCEPT_ENCODING] = gzip
$_SERVER[HTTP_HOST] = www.neonsleep.com
$_SERVER[HTTP_ACCEPT] = text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
$_SERVER[HTTP_CONNECTION] = keep-alive
$_SERVER[CONTENT_TYPE] = application/x-www-form-urlencoded
$_SERVER[PATH] = /usr/local/apache_php5/sbin:/usr/bin:/bin
$_SERVER[SERVER_SIGNATURE] =
$_SERVER[SERVER_SOFTWARE] = Apache/2.2.4 (Unix) mod_ssl/2.2.4 OpenSSL/0.9.8c PHP/5.2.4
$_SERVER[SERVER_NAME] = www.neonsleep.com
$_SERVER[SERVER_ADDR] = 60.234.4.41
$_SERVER[SERVER_PORT] = 80
$_SERVER[REMOTE_ADDR] = 69.63.178.250
$_SERVER[DOCUMENT_ROOT] = /www/virtual/neonsleep.com/htdocs
$_SERVER[SERVER_ADMIN] = webmaster@neonsleep.com
$_SERVER[SCRIPT_FILENAME] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[REMOTE_PORT] = 36769
$_SERVER[REDIRECT_QUERY_STRING] = url=/doilookthin/30
$_SERVER[REDIRECT_URL] = /doilookthin/30
$_SERVER[GATEWAY_INTERFACE] = CGI/1.1
$_SERVER[SERVER_PROTOCOL] = HTTP/1.1
$_SERVER[REQUEST_METHOD] = GET
$_SERVER[QUERY_STRING] = url=/doilookthin/30
$_SERVER[REQUEST_URI] = /doilookthin/30
$_SERVER[SCRIPT_NAME] = /sapphire/main.php
$_SERVER[ PHP_SELF ] = /sapphire/main.php
$_SERVER[REQUEST_TIME] = 1236809221
$_SERVER[argv] = Array
$_SERVER[argc] = 1

.247 (the non-working server), sends requests like:

$_REQUEST[url] = /doilookthin/20
$_SERVER[REDIRECT_UNIQUE_ID] = HNk2xKwQZC0AADLIgbQAAABF
$_SERVER[REDIRECT_STATUS] = 200
$_SERVER[UNIQUE_ID] = HNk2xKwQZC0AADLIgbQAAABF
$_SERVER[HTTP_USER_AGENT] = facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)
$_SERVER[HTTP_ACCEPT_ENCODING] = gzip
$_SERVER[HTTP_HOST] = www.neonsleep.com
$_SERVER[HTTP_ACCEPT] = text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
$_SERVER[HTTP_CONNECTION] = keep-alive
$_SERVER[CONTENT_TYPE] = application/x-www-form-urlencoded
$_SERVER[PATH] = /usr/local/bin:/usr/bin:/bin
$_SERVER[SERVER_SIGNATURE] = <address>Apache/2.2.3 (Debian) PHP/4.4.7 mod_ssl/2.2.3 OpenSSL/0.9.8c Server at www.neonsleep.com Port 80</address>

$_SERVER[SERVER_SOFTWARE] = Apache/2.2.3 (Debian) PHP/4.4.7 mod_ssl/2.2.3 OpenSSL/0.9.8c
$_SERVER[SERVER_NAME] = www.neonsleep.com
$_SERVER[SERVER_ADDR] = 219.88.240.130
$_SERVER[SERVER_PORT] = 80
$_SERVER[REMOTE_ADDR] = 69.63.178.247
$_SERVER[DOCUMENT_ROOT] = /www/virtual/neonsleep.com/htdocs
$_SERVER[SERVER_ADMIN] = webmaster@neonsleep.com
$_SERVER[SCRIPT_FILENAME] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[REMOTE_PORT] = 43559
$_SERVER[REDIRECT_QUERY_STRING] = url=/doilookthin/20
$_SERVER[REDIRECT_URL] = /doilookthin/20
$_SERVER[GATEWAY_INTERFACE] = CGI/1.1
$_SERVER[SERVER_PROTOCOL] = HTTP/1.1
$_SERVER[REQUEST_METHOD] = GET
$_SERVER[QUERY_STRING] = url=/doilookthin/20
$_SERVER[REQUEST_URI] = /doilookthin/20
$_SERVER[SCRIPT_NAME] = /sapphire/main.php
$_SERVER

= /sapphire/main.php
$_SERVER[PATH_TRANSLATED] = /www/virtual/neonsleep.com/htdocs/sapphire/main.php
$_SERVER[argv] = Array
$_SERVER[argc] = 1

I've tried contacting Facebook for help, but of course it's impossible to get any support out of a business that large.

Avatar
Sam

12 March 2009 at 11:41am Administrator, 685 Posts

Errors of this kind are often a sign that PHP4 is running instead of PHP5.

Avatar
nzpete

12 March 2009 at 12:01pm Community Member, 4 Posts

Aha, thank you, that's exactly what's happening. Now I just have to figure out why the server is reverting to 4.4.7 on certain requests.