Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

2 Neutral

About sylvest

  • Rank
    Distant Family

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I'm trying to debug some rewrite rules, without much success currently. If I could see the log, showing what text was used to match conditions in Rewrite Cond and Rewrite Rule statements, and what the result was, I would be more likely to be able to find the error. I have tried enabling logging in the .htaccess file and it says "ErrorLog not allowed here". How do I enable rewrite logging on TCH? If I can't, how do I debug my rules? Thanks - Rowan
  2. In my web application, I am trying to execute the SQL query: SELECT b.BuildNum,c.MenuName FROM `Members$BuildClasses` AS mc JOIN BuildClasses AS c ON mc.BuildClassId = c.BuildClassId JOIN Builds AS b ON c.BuildClassId = b.BuildClassId WHERE mc.MemberId = " . $_SESSION['login_memberid'] . " AND b.Status > '0' AND mc.Status > '0' ORDER BY BuildNum by executing the statement: $result = mysqli_query($dbh, $sql); on line 444 in file: /home/sylvest/include/functions.php (where $sql is equal to the above string) When I do this I'm getting this error: [26-Feb-2019 12:40:23.516 GMT 0] on localhost, L_ERROR Failed to query database, \$result is False, SQL = {SELECT b.BuildNum,c.MenuName FROM `Members` AS mc JOIN BuildClasses AS c ON mc.BuildClassId = c.BuildClassId JOIN Builds AS b ON c.BuildClassId = b.BuildClassId WHERE mc.MemberId = 4 AND b.Status > '0' AND mc.Status > '0' ORDER BY BuildNum}, Errno: 1054 Error: Unknown column 'mc.BuildClassId' in 'on clause' at line 444 in file: /home/sylvest/include/functions.php Called from checked_query(SELECT b.BuildNum,c.MenuName FROM `Members` AS mc JOIN BuildClasses AS c ON mc.BuildClassId = c.BuildClassId JOIN Builds AS b ON c.BuildClassId = b.BuildClassId WHERE mc.MemberId = 4 AND b.Status > '0' AND mc.Status > '0' ORDER BY BuildNumbuilds that this user may access) at line 254 in file /home/sylvest/include/header.php Called from require(/home/sylvest/include/header.php) at line 65 in file /home/sylvest/public_html/swchoir/welcome.php From this it seems that MySQL is executing the query on the table `Members` instead of `Members$BuildClasses`, which is why it can't find the 'mc.BuildClassId' field. An earlier version of the code DID request the table `Members` but I changed it several days ago. Why is it still using the old version of the code? Is there any caching system in place for this type of code? If so, what exactly is cached, and where? How do I force it to update the cache? Or what other reason might there be for this error? Thanks - Rowan
  3. My site uses the function json_encode(). Previously I had my own php.ini file that included the line "extension = json.so". Everything used to work fine. But for a different reason I had to stop using my PHP.INI file and start using one generated by CPanel. Now I'm getting the error "Fatal error: Call to undefined function json_encode() in /home/sylvest/include/var_dump_ret.php on line 16". The CPanel generated INI file does not contain the line "extension = json.so" and I guess that this is why it's stopped working. So my question is, how either using CPanel or within my PHP code do I load the module JSON? Web searches say there should be a command Select PHP Version within CPanel that allows this to be done, but TCH's version doesn't seem to have this. I guess TCH did not include this in their configuration. So how do I add any modules that I need? Thanks - Rowan
  4. I have a requirement for my PHP pages sometimes to send files (e.g. images, CSS files, JS files, fonts) to the client. The normal way to do this seems to be to use the readfile() function, but I understand that this reads the whole file into memory and then sends it to the client, which will cause problems if it is a very large file. I understand that there is an Apache module mod_xsendfile which does a better job, but Support tell me that this is not available on my shared server. So my question is, what is the best/most efficient way of sending files to the client in PHP, without mod_xsendfile? Do I have to write a loop that reads the file a few K at a time and sends each chunk to the client before reading the next? If so, has anyone got this code already working that they would be happy to share with me, to save a bit of time? Thanks - Rowan
  5. Hi, I have an HTML form with a large number of inputs on it. Most of them are <select> elements each with 6 options. There are currently 1295 of these selects, plus a few other inputs, but the number is not constant, since the form is generated dynamically, and it depends on the number of rows and the number of columns for the currently selected period. In the $_POST array it seems that I am only receiving 1000 values, which means that some of the ones I need I am not receiving. I have tried changing the value of max_input_vars in /home/myaccount/public_html/php.ini from 1000 to 10000, but this does not seem to have improved anything. Do I have to do anything (e.g. restart the server) for it to read this file? Or is this the wrong way of changing this limit? Or do I need to reduce the number of inputs in some way (it's not easy to see a way to do this without a lot of Javascript, which I have been trying to avoid). Thanks - Rowan
  6. I have the following SQL being executed by a mysqli_query() statement in my PHP code: DROP TEMPORARY TABLE IF EXISTS tmptable; CREATE TEMPORARY TABLE tmptable SELECT * FROM Members WHERE MemberId = '105' AND Status > '0'; UPDATE tmptable SET RecordId = '', Status = '0', ChangedBy = '4', ChangedOn = '2017-05-21 19:03:39'; UPDATE Members SET Status = '0' WHERE MemberId = '105' AND Status > '0'; INSERT INTO Members SELECT * FROM tmptable; It is being rejected with the following error: Errno: 1064 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TEMPORARY TABLE tmptable SELECT * FROM Members WHERE MemberId = '105' AND' at line 1 at line 952 in file: /home/sylvest/public_html/swchoir/edit_member.php If I put the same SQL into the SQL tab in phpMyAdmin, it works fine. What do I have to do to make this work in my PHP code? Thanks - Rowan
  7. I have a web page which under certain conditions forwards to another one using the statement: header($next_page); where $next_page == "Location: http://www.sylvesterbradley.org/swchoir/index.php?v=1493894983" This causes a 500 error. I am reasonably sure that I have sent no output at all (other than to a log file) before the header statement. In any case, on other occasions where I have done this I seem to get a warning, which in this case is not happening. I see nothing in any error_log files that I am aware of (that is /home/sylvest/error_log and /home/sylvest/pubic_html/swchoir/error_log) nor do I see anything relevant in the cPanel Errors list. What am I doing wrong? How can I debug what is happening? I have a log statement early in the redirected-to file (index.php) and this does not seem to be being triggered, so I don't think it is ever executing this file. Thanks - Rowan
  8. I am trying to use the PHP password hashing module in my code, but the following line: $hasher = new PasswordHash(8, false); is giving me the error: Fatal error: Class 'PasswordHash' not found in /home/myaccount/public_html/directory/edit_member.php on line 124 I am running PHP version 5.6.30. I thought that all versions from 5.5.0 onwards had this module? What do I have to do to enable me to use this? Thanks - Rowan
  9. Here's an error reported from last night's attempt to run my PHP file in a cron job: Failed loading /opt/cpanel/ea-php54/root/usr/lib64/php/modules/ioncube_loader_lin_5.4.so: /opt/cpanel/ea-php54/root/usr/lib64/php/modules/ioncube_loader_lin_5.4.so: undefined symbol: execute Zend Guard Loader requires Zend Engine API version 220100525. The Zend Engine API version 220131226 which is installed, is newer. Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Guard Loader. Set-Cookie: PHPSESSID=p4nu293cl2kikl2tb7t7ooo4j6; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-type: text/html; charset=UTF-8 <br /> <b>Fatal error</b>: Class 'PasswordHash' not found in <b>/home/myaccount/include/do_email.php</b> on line <b>153</b><br /> Questions arising: Why am I getting the undefined symbol: execute error? This seems to be something to do with loading PHP, before it has ever tried to access my script. Why is the session cookie that it is sending set to Expires: Thu, 19 Nov 1981? Why has it failed to find PasswordHash? This file runs correctly when called as part of my website, so I think the problems must be to do with diffferences between the environment when run as a web page and when run as a cron job. Thanks - Rowan
  10. Well, it sort of helps. Thanks for providing this link. But I think my most straightforward answer is to remember to use Firefox or Chrome if I want to access the TCH forum. Of course I will usually forget this until I find that I can't paste :-(. Thanks - Rowan
  11. Bruce, Thanks for your reply. Why is it that I can't do an internal rewrite to a location above public_html? Here is an exerpt from http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule The Substitution of a rewrite rule is the string that replaces the original URL-path that was matched by Pattern. The Substitution may be a: file-system path Designates the location on the file-system of the resource to be delivered to the client. Substitutions are only treated as a file-system path when the rule is configured in server (virtualhost) context and the first component of the path in the substitution is exists in the file-system So I guess this is saying that what I'm trying to do won't work in an .htaccess file. But is there a way that I can make it work in my Virtual Host config file? Surely there cabn;t be any fundamental reason why I can;t redirect to a file system diretory above public_html? I can after all include any of these files, which is pretty close to the same thing? Thanks - Rowan
  12. I have found many discussions on the web around this topic. Some say that a rewrite rule assumes that the redirect path is a file system path if the first element of the path (/home in this case) exists at the root of the file system (which it obviously does in this case). Otherwise it assumes that it is relative to the Document Root. Other people imply that redirect to a file system path is not permitted for .htaccess files for security reasons, but that you can use an Alias as a work around. Is it in fact possible to write a RewriteRule that will work in an .htaccess file on a TCH server to redirect to a file system path? How exactly do I do this? If not, is it possible to use an Alias (which would presumably point to a file system path from a web URL)? If so, how do I do this? You may ask - why do I want to do this? The answer is that I prefer to keep all the files that I include or redirect to in non web accessible places, to minimise the chance that someone can deduce or guess the names of these files, and then download them, and see the inner workings of my web site, security system etc,. thus compromising my security. I find it difficult to believe given all the things that mod_rewrite can do, that it can't do this... Thanks - Rowan
  13. I am trying to come up with a way of redirecting all requests for files in the directory http://mydomain/swchoir/<filename> to the file with the same name (and the same GET parameters if present) in the directory /home/myaccount/build00001/public_html/swchoir/<filename>. My end objective is to allow the server to contain several different builds and for people who have the necesary permissions to be able to choose which one they want to look at, so for example I could have one build that is on public release, another that is in QA, and a third which is in development. Ordinary users would only be able to see the public release one. QA people would be able to see either the public release or the QA build. And developers would be able to see all of them. As a step towards this, I am trying to develop some rewrite rules that will send _all_ users to build00001. The lines I have added to the .htaccess file in /home/sylvest/public_html are: SetEnvIfExpr True build_num=00001 Rewrite Rule ^swchoir/([0-9a-z/\.?&_=-]+)$ /home/myaccount/buildbuild_num/public_html/swchoir/$1 [NC, L] php_value include_path ".:/home/myaccount/buildbuild_num/include" Now when I try to access a page I get an internal server error. Please can you suggest what is wrong with my rule, or how to best get this to do what I want? In particular I'm not sure how to use the Environmental Variable build_num that I have tried to define. I'm not sure whether "SetEnvIfExpr True" is valid, and I'm not sure whether "sylvest/buildbuild_num/public_html" is a valid way of using the variable. Seems unlikely, but I'm not sure whether it needs some kind of quotes to indicate that it is a variable name, and if so, what kind. If you know a better way of doing the whole job, please tell me that too. It seems odd to me that something like this doesn't already exist somewhere, since it surely must be a commmon need. Thanks - Rowan
  14. Thank you. I think you can close this ticket now. If I can't get the cron job to work properly after sorting out the INI file I will raise another one. Thanks - Rowan
  15. Balakrishnan, Thanks for your help with this. Just out of interest, where is "the crontab entry"? Where can I see this, just so I understand what you have done? I will look at simplifying the php.ini file as you suggest, although I may need to ask which entries are necessary and which are not. Thanks again for your help. The excellent support that the TCH team provides is one of the main reasons I stick with you. Rowan
  • Create New...