How to fix "permission denied" error on online server? - php

I have this very simple php website, Projectx2 that I am hosting from the Zymic server because it had good ratings.
However, I am having a few unusual errors that don't happen on my locally hosted XAMPP server.
The errors are:
Warning Cannot modify header information - headers already sent by (output started at /www/zzl.org/p/r/o/projectx2/htdocs/default.php:259) in /www/zzl.org/p/r/o/projectx2/htdocs/default.php on line 295.
and:
Warning: fopen (count.txt) [function.fopen]: failed to open stream: Permission denied in /www/zzl.org/p/r/o/projectx2/htdocs/default.php on line 298
and:
Warning: fwrite(): supplied argument is not a valid stream resource in /www/zzl.org/p/r/o/projectx2/htdocs/default.php on line 299.
and:
Warning: fclose(): supplied argument is not a valid stream resource in /www/zzl.org/p/r/o/projectx2/htdocs/default.php on line 300.
Here, I have a simple counter that keeps page counts in the file count.txt, which is also on the server.
Here is my code from 290 - 302:
<?php
$fp = fopen('count.txt','r');
$count = fread($fp,filesize('count.txt'));
fclose($fp);
if(!isset($_COOKIE['count'])) {
setcookie('count'); // 295
$count++;
}
$fp = fopen('count.txt','w'); // 298
fwrite($fp,$count); // 299
fclose($fp); // 300
echo "<div id='hitcount'>$count views</div>";
?>
I don't know why this is happening - I know very little about I/O in PHP, but I know some in Java. Can you please explain to me the problems in this code, and why it only works on a regular server?
Or maybe, is it just the Zymic server?
Tell me if I need to reveal more information or code.
thanks.

One by one:
Cannot modify header information - headers already sent: indicates that the PHP script is attempting to modify the HTTP headers after it has already started emitting the page. I can't give any more information because you haven't posted the relevant code.
Permission denied means the web server user does not have permission to access the file in the way that you wish. Talk to your hosting company about how you grant that permission. All the subsequent errors flow from this problem.
critique my website design: No - this site is about focussed questions on software development, not opinions on layout or colour schemes.

Use a FTP client like FileZilla to connect to your your website and then find the file count.txt and right click and then -> properties and set the permission to 0777

Related

PHP Session issue only on GoDaddy (Warning: session_start(): Cannot send session cookie)

I am currently working on a user registration system for a client on GoDaddy hosting.
I have previously never had this sort of issue before on Hostgator and while testing locally on a PHP test server on OS X.
It's a fairly simple script too. common.php accesses the MySQL database, all of the pages (login, register, etc.) include common.php. Sessions start when the user logs in, etc.
I see the following errors at the top of the page:
Warning: session_start(): open(/home/content/10/12114910/tmp/sess_trmok9fgtb527mjp21a76shf54, O_RDWR) failed: No such file or directory (2) in /home/content/10/12114910/html/common.php on line 86
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/content/10/12114910/html/common.php:86) in /home/content/10/12114910/html/common.php on line 86
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/content/10/12114910/html/common.php:86) in /home/content/10/12114910/html/common.php on line 86
The following errors are at the bottom of the page.
Warning: Unknown: open(/home/content/10/12114910/tmp/sess_trmok9fgtb527mjp21a76shf54, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
Once again, this is only a GoDaddy issue. My client was originally on Windows hosting and this just did not even work at all and I switched them to Linux hosting.
They were on PHP version 5.3 and I changed it to 5.4 and I have still had no luck.
I have never messed with a php.ini file. Would I need to create one? I have heard that uploading it into the public_html folder overrides the one on the server even though we are on a shared hosting plan.
Would I also need SSH access to create a tmp folder and set proper permissions for it?
This is usually quite easy to fix on crappy providers (I don't recommend GoDaddy, by the way).
Here is how I'd go about fixing it, hopefully it will help you.
Step 1: Make a directory and call it _sessions or something of that
nature.
Step 2: Give it a chmod of 775 so that the web server can write to it.
Step 3: On the first script that runs, right at the top place session_save_path("./_sessions");
Step 4 (optional, but recommended): Add either deny from all in a .htaccess file to prevent people from getting to the directory, or simply chmod 776.
Find out more about session_save_path() here: php.net/session_save_path

Warning: failed to open stream and cannot modify header

The site www.bethazore.com is having a couple of error messages come up when trying to login to the admin-
Warning: file_put_contents(/home/content/37/10812537/html/wp-content/themes/novelty/custom-style.css) [function.file-put-contents]: failed to open stream: Permission denied in /home/content/37/10812537/html/wp-content/themes/novelty/functions.php on line 66
Warning: Cannot modify header information - headers already sent by (output started at /home/content/37/10812537/html/wp-content/themes/novelty/functions.php:66) in /home/content/37/10812537/html/wp-includes/pluggable.php on line 875.
I got some help here. I'm not sure how to fix it, it's a bit too complicated for me here but this is what they said Warning: Cannot modify header information - headers already sent by ERROR - can anyone help?
Let's analyze this error word by word:
file_put_contents(/home/content/37/10812537/html/wp-content/themes/novelty/custom-style.css)
Right, so we're running file_put_contents, and it's accessing that file.
failed to open stream: Permission denied
But it's not allowed to do what it wants to do with that file, which is writing for that function.
in /home/content/37/10812537/html/wp-content/themes/novelty/functions.php on line 66
And that's where it was called.
So, you now know where the error was generated, what is causing it, and what it's trying to do. The problem is of course that Apache doesn't have permissions to overwrite that file.
Run the following in your console:
chmod 777 /home/content/37/10812537/html/wp-content/themes/novelty/custom-style.css
Or set it to mode 777 in your control panel, and you should be fine.

Is it normal for hosting company to disable sessions on server?

I have just moved over to a linux server on my shared hosting to see if it is less rubbish than a windows server on godaddy (I have been stupid enough to have paid them 12 months up front so I am stuck with those idiots now). I am now no longer able to use any kind of sessions at all.
They have got back to me saying that it is up to me to resolve the issue to get it to work... yes that is right... TO GET SESSIONS TO WORK! Excuse me if I seem a little irate but I am furious.
Can someone please inform me how I can in some way get sessions to work on an Apache server? I have never had to set this up before because it has never been a problem. As soon as I do:
<?php session_start() ?>
... it is just coming up with about 8 lines of errors saying that:
Warning: session_start() [function.session-start]: open(/var/chroot/home/content/30/10247530/tmp/sess_sgruthqkbhfms6ekcle2l0n6i5, O_RDWR) failed: No such file or directory (2) in /home/content/30/10247530/html/sessionthing.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/content/30/10247530/html/sessionthing.php:2) in /home/content/30/10247530/html/sessionthing.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/30/10247530/html/sessionthing.php:2) in /home/content/30/10247530/html/sessionthing.php on line 2
Warning: Unknown: open(/var/chroot/home/content/30/10247530/tmp/sess_sgruthqkbhfms6ekcle2l0n6i5, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
I have tried creating a php.ini file and I still cannot get it to work properly. I have checked the settings using phpinfo() and I genuinely do not know where to go from here.
EDIT: There are a few things appearing down the side of the page now pointing to similar problems. For some reason I did not come up with those when I did a search. One of them is even closed: https://stackoverflow.com/questions/11374110/session-start-errors-on-godaddy-server?rq=1
That one says that they got it resolved with Godaddy so I think I will have to go back to them and tell them to sort it out. It is not that I do not want to learn how to configure the server... it is just that sessions should just work.
Make sure that there are no other <?php session_start() ?> declared, and try set your own session temp path,
<?php
if (!is_dir(session_save_path())) {
session_save_path ('your/custom/existing/directory');
}
session_start();
?>
PHP is trying to save the session in /var/chroot/home/content/30/10247530/tmp/, and it can't open that directory (either because it doesn't exist or because it doesn't have write permissions to it). Investigate PHP's access to this path and I believe that you'll get your sessions working - maybe you overlooked a config variable when you migrated your code to the new server?

opencart Internal Server Error 500

I use shoppica theme for opencart. When I log in as a test customer and click on order history section I always get a internal server error 500. I haven't changed anything in .htaccess nor in config file. It was from the begging but from now on I need it. All the sections in customer panel works except order history and transaction section. One clue is, when I give a reward transaction to my customer the transaction section which was before in the panel would disappeared and gave me an internal 500 error. Please help me as I need it a lot.
I can't install it again because it is for 3 months and I can't start from the beginning.
I use opencart 1.5.3.1
for another internal error I got these errors in my log:
PHP Warning: unlink(public_html/system/cache/cache.currency.1358109327) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in public_html/system/library/cache.php on line 14
PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cookie - headers already sent by (output started at public_html/index.php:104) in public_html/system/library/session.php on line 11
PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at public_html/index.php:104) in public_html/system/library/session.php on line 11
PHP Warning: Cannot modify header information - headers already sent by (output started at public_html/index.php:104) in public_html/index.php on line 177
PHP Warning: Cannot modify header information - headers already sent by (output started at public_html/index.php:104) in public_html/vqmod/vqcache/vq2-system_library_currency.php on line 45
you should check the unlink function
I'm a bit too late for this particular question, but since it has quite a bit of views I'll provide an answer nevertheless.
For anyone else struggling with 500 Server Errors in OpenCart – the first thing to do when debugging these is to look into your server's error log and find the exact error message.
If there aren't any, you may need to enable them explicitly by adjusting the error_reporting, display_errors and log_errors settings in your PHP configuration. You can also temporarily change them in your main index.php file directly.
Once you know the exact error message, fixing it is a simple process.
We've covered some of the most common OpenCart error messages causing 500 Server Errors in our blog post: Server Errors and Blank Pages in OpenCart: Most Common Causes.
In this particular case, the issues are caused by the fact that your cache folder is either missing or not writable by the server:
PHP Warning: unlink(public_html/system/cache/cache.currency.1358109327) [function.unlink]: No such file or directory in public_html/system/library/cache.php on line 14
This error indicates your OpenCart currency cache file is missing. In most cases, it happens when your system/cache/ folder lacks correct server permissions (for OpenCart, it's usually 775). It should be fixed by adjusting folder permissions and removing all of the existing cache files from inside the folder.

HTML tables to PDF in PHP - neither DOMPDF nor html2ps/pdf are working

For the longest time now I've been trying to convert HTML pages containing large tables to PHP. These are styled with CSS and can be several pages long.
I first tried DOMPDF. It works great, until a document is more than one page. None of the fixes I've found work. Either it errors out, or any element that would be even partially on the second page gets lumped over the content of page 1. I've tried both the latest release and the SVN copy I checked out today.
I also tried html2ps/pdf, and it gives me "permission denied" errors writing to the cache directory, even though the directory is fully writable. The system requirements test script passes. The server is running PHP 5 under IIS (not my choice heh).
Can either of these be convinced to work, or is there a library that can do it?
Errors from the demo/test scripts:
Warning: file_put_contents(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/7d888258e9745b3716532ea81342daaf.css.compiled) [function.file-put-contents]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\css.cache.class.php on line 33
Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/unicode.lb.classes.dat) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 991
Warning: flock() expects parameter 1 to be resource, boolean given in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 992
Warning: fwrite(): supplied argument is not a valid stream resource in C:\Inetpub\wwwroot\JM\pdf\html2ps\inline.content.builder.php on line 1011 (this error repeats several thousand times)
Warning: fopen(C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z) [function.fopen]: failed to open stream: Permission denied in C:\Inetpub\wwwroot\JM\pdf\html2ps\pdf.fpdf.makefont.php on line 318
Can't write to file C:\Inetpub\wwwroot\JM\pdf\html2ps\cache/times.z
A similar problem with html2pdf under IIS has been discussed here.
The solution was quite simple, yet weird. If this doesn't help you, a full error-message and / or a little bit of code would help me to help you.
I personally recommend command line applications instead of any PHP libraries.
Reasons :
PHP libraries need more time and memory (cache) for conversion process.
They need well-formatted HTML pages only, otherwise throw errors or warnings.
No support for external style sheets.
Command Line Tool:
If you run your script on a Linux server then I suggest command line tools.
Reasons :
They are extremely fast compared to PHP libraries.
Support CSS.
Accept non-well-formatted HTML.
Which command line tool to use?
wkhtmltopdf
htmltopdf
html2pdf
For more information refer to Converting HTML to PDF (not PDF to HTML) using PHP.

Categories