Error with manual install: Failed opening required '__DIR__/lib/discourse.php'

I manually downloaded the latest master ZIP from the repo, dropped it into public_html/blog/wp-content/plugins/wp-discourse/, and clicked Activate. It produced the following error:

Warning: require_once(__DIR__/lib/discourse.php) [function.require-once]: failed to open stream: No such file or directory in [REDACTED]public_html/blog/wp-content/plugins/wp-discourse/wp-discourse.php on line 30

Fatal error: require_once() [function.require]: Failed opening required '__DIR__/lib/discourse.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in [REDACTED]public_html/blog/wp-content/plugins/wp-discourse/wp-discourse.php on line 30

Not sure if this was designed to install this way, but the installation notes are sparse in this regard. The only way I was able to fix it was to replace __DIR__ with WPDISCOURSE_PATH in https://github.com/discourse/wp-discourse/blob/master/wp-discourse.php#L30-L32.

Not sure where __DIR__ is initialized, but it wasn’t clear how to best fix this. Thoughts on my fix? Is this a bug?

Additionally, after installing the plugin and attempting to trigger a post to discourse, I got:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 470

Warning: file_get_contents(http://[HOSTNAME]/posts) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 470

Warning: First parameter must either be an object or the name of an existing class in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 475

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 470

Warning: file_get_contents(http://[HOSTNAME]/posts) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 470

Warning: First parameter must either be an object or the name of an existing class in [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php on line 475

Warning: Cannot modify header information - headers already sent by (output started at [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php:470) in [REDACTED]/public_html/blog/wp-admin/post.php on line 235

Warning: Cannot modify header information - headers already sent by (output started at [REDACTED]/public_html/blog/wp-content/plugins/wp-discourse/lib/discourse.php:470) in [REDACTED]/public_html/blog/wp-includes/pluggable.php on line 1196
  1. I setup the API key from discourse and configured the “system” username. Wordpress install is latest vanilla (4.2.2).
  • I loaded an existing post, clicked on “Post in discourse” in the publishing area and clicked “Update”
  • Above errors were displayed.

This appears to be related to the allow_url_fopen PHP config being set to OFF. Will investigate it being enabled…

إعجاب واحد (1)

Are you not running at least PHP 5.3?

No. It’s 5.2.17.

I’ve already determined that this server is not appropriate. I’m exploring how to run Wordpress in a docker container on the same host as discourse. I have concerns about risk of managing/exposing a PHP runtime on port 80 and having to manage multiple domains routing to the same socket. I have light devops skills, but can understand everything pretty well. Just sad that my initial effort of getting wordpress + discourse to go is turning out to be a tall order so far.

Thanks for the follow up.

For other interested parties, this appears to be the direction I will end up going in: